我正在嘗試測驗單個節點上是否存在任何 2 個模式。如果兩種模式都存在,我會得到一個結果,但如果只有 1 種模式存在,我不會得到任何結果。如果存在一種或兩種模式,我該如何撰寫查詢以便獲得結果?

(這是一個例子,如果兩種模式都存在 - 結果被回傳)
MATCH(特征)<-[:HAS]-(thing {name:'ball'})<-[:IS_A*]-(decendent)-[r: HAS]->(characteristic)
MATCH (characteristic2)-[r2:HAS]->(thing2 {name:'ball'})<-[:IS_A*]-(decendent2)<-[:HAS]-(characteristic)
RETURN decendent, decendent2
現在想象一下,如果我只有彈跳關系。上面的查詢將不回傳任何內容。它只回傳如果兩者都為真。如果任一為真,我如何匹配?
uj5u.com熱心網友回復:
看看OPTIONAL MATCH https://neo4j.com/docs/cypher-manual/current/clauses/optional-match/
您的查詢可以重寫為,
MATCH (characteristic)<-[:HAS]-(thing {name:'ball'})<-[:IS_A*]-(decendent)-[r:HAS]->(characteristic)
OPTIONAL MATCH (characteristic2)-[r2:HAS]->(thing2 {name:'ball'})<-[:IS_A*]-(decendent2)<-[:HAS]-(characteristic)
RETURN decendent, decendent2
如果任一后代與相應的子句匹配,這將回傳結果
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/325641.html
上一篇:如何從子類中訪問父類中的內部類?
下一篇:通過基類參考訪問派生類成員
