[英]Find path in Neo4j with directed edges
這是我第一次嘗試Neo4j,如果我缺少一些瑣碎的東西,請原諒。 這是我的問題:
考慮在以下Neo4j控制台示例中創建的圖形: http ://console.neo4j.org/?id=y13kbv
在此示例中,我們具有以下節點:
(人員{memberId,memberName,membershipDate})
(通過電子郵件發送{value,badFlag})
(AccountNumber {value,badFlag})
我們可能有更多的節點捕獲與Person相關的功能,例如creditCard,billAddress,shipAddress等。所有這些節點都將與Email和AccountNumber節點相同: (creditCard {value,badFlag}),(billAddress {value,badFlag} }),等等。
如在Neo4j控制台示例中所示,填充了圖,並假設我們向圖添加了另一個Person,如下所示:
(p7:Person {memberId:'18' , memberName:'John', membershipDate:'12/2/2015'}),
(email6:Email {value: 'john@gmail.com', badFlag:'false'}),
(a2)-[b13:BELONGS_TO]->(p7),
(email6)-[b14:BELONGS_TO]->(p7)
當我們將此新人員添加到系統時,用例是我們必須檢查是否存在從新人員(“ email6”和“ a2”節點)的功能到系統中“ badFlag = true”,在這種情況下為節點(a1 {value:1234,badFlag:true})。
在這里,結果路徑為(email6)-[BELONGS_TO]->(p7)<-[BELONGS_TO]-(a2)-[BELONGS_TO]->(p6)<-[BELONGS_TO]-(email5)-[BELONGS_TO]->(p5)<-[BELONGS_TO]-(a1:{badFlag:true})
我嘗試過這樣的事情:
MATCH (newEmail:Email{value:'john@gmail.com'})-[:BELONGS_TO]->(p7)-[*]-(badPerson)<-[:BELONGS_TO]-(badFeature{badFlag:'true'}) RETURN badPerson, badFeature;
當只有一個級別的鏈接時,它似乎起作用,但是當路徑可能更長時(如Neo4j控制台示例),它不起作用。
我需要有關Cypher查詢的幫助,這將幫助我解決此問題。 我最終將使用我的應用程序使用Neo4j的Java API進行此操作。 使用Java API進行此操作的正確方法是什么?
您在查詢中輸入錯誤。 PART_OF
應該是BELONGS_TO
。 這應該為您工作:
MATCH (newEmail:Email {value:'john@gmail.com'})-[:BELONGS_TO]->(p7)-[*]-(badPerson)<-[:BELONGS_TO]-(badFeature {badFlag:'true'})
RETURN badPerson, badFeature;
另外:您似乎對所有屬性都使用字符串值。 我將字符串值true和false替換為布爾值true
和false
。 同樣,始終為數字的值應僅使用整數或浮點值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.