2016-01-13 119 views
1

我有PERSON圖,PERSON可以FRIEND s的PERSON並能OWNOBJECT例如:的Neo4j避免循環圖重複

a-FRIEND-b 
a-FRIEND-c 
b-FRIEND-c 
c-OWN-"car" 

我希望讓別人誰需要的東西,找朋友或一個朋友看自己的這個東西的朋友,所以我用:

MATCH (me:PERSON)-[:FRIEND*1..2]-(p:PERSON)-[o:OWN]->(obj:OBJECT) 
WHERE me.id = {userId} 
RETURN p 

但是,如果「一」想「車」我得到的「C」兩次,因爲我可以有兩種方式到達那裏:

a-FRIEND-c-OWN-"car" 
a-FRIEND-b-FRIEND-c-OWN-"car" 

我該如何確保只能得到「c」一次?

回答

2

就在DISTINCT改性劑添加到您的return語句:

MATCH (me:PERSON)-[:FRIEND*1..2]-(p:PERSON)-[o:OWN]->(obj:OBJECT) 
WHERE me.id = {userId} 
RETURN DISTINCT p 
+2

或者你可能'RETURN P,COUNT(*)'給多少路徑有一個跡象,這可能表明一個實力 –

+0

而你可以嵌入ID檢查;-) ... MATCH(me:PERSON {id:{userId}})...' –