2015-12-24 92 views
0

這是我第一次嘗試Neo4j,請原諒我失去了一些非常微不足道的東西。 這裏是我的問題:在Neo4j中找到具有直接邊緣的路徑


考慮圖表如下面的Neo4j的控制檯例如創建: http://console.neo4j.org/?id=y13kbv

我們有以下在本例中的節點:

(人{MEMBERID,成員名稱,membershipDate})

(Email {value,badFlag})

(賬戶號碼{值,badFlag})

我們可能有更多的節點捕捉到相關的信用卡一樣,billAddress,shipAddress等 所有這些節點的人的特點將是相同的電子郵件和AccountNumber節點: (creditCard {value,badFlag}),(billAddress {value,badFlag})等等。

隨着人口作爲Neo4j的控制檯例子中看到的圖形,假設我們再增加一個人的圖如下:

(p7:Person {memberId:'18' , memberName:'John', membershipDate:'12/2/2015'}), 
(email6:Email {value: '[email protected]', badFlag:'false'}), 
(a2)-[b13:BELONGS_TO]->(p7), 
(email6)-[b14:BELONGS_TO]->(p7) 

當我們這個新的人加入到系統中,使用情況是我們必須檢查是否存在從新Person(「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:'[email protected]'})-[:BELONGS_TO]->(p7)-[*]-(badPerson)<-[:BELONGS_TO]-(badFeature{badFlag:'true'}) RETURN badPerson, badFeature; 

這似乎當有鏈接的只有一個級別的工作,但它不工作當路徑可能會比Neo4j控制檯例子更長時。

我需要Cypher查詢幫助我解決這個問題。 我最終將使用我的應用程序使用Neo4j的Java API來執行此操作。使用Java API執行此操作的正確方法是什麼?

回答

0

您在查詢中有錯字。 PART_OF應該是BELONGS_TO。這應該爲你工作:

MATCH (newEmail:Email {value:'joh[email protected]'})-[:BELONGS_TO]->(p7)-[*]-(badPerson)<-[:BELONGS_TO]-(badFeature {badFlag:'true'}) 
RETURN badPerson, badFeature; 

旁白:你似乎使用字符串值的所有屬性。我會用布爾值truefalse替換字符串值'true'和'false'。同樣,始終爲數字的值應該只使用整數或浮點值。

相關問題