Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graph Neo4J避免循环图上的重复_Graph_Neo4j_Cypher - Fatal编程技术网

Graph Neo4J避免循环图上的重复

Graph Neo4J避免循环图上的重复,graph,neo4j,cypher,Graph,Neo4j,Cypher,我有一个人的图形,人可以是朋友s和人并且可以拥有对象,例如: 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 但如果“a”想要“车”,我会得到两次“c”,因为我可以通过两种方式

我有一个
的图形,
可以是
朋友
s和
并且可以
拥有
对象,例如:

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
但如果“a”想要“车”,我会得到两次“c”,因为我可以通过两种方式到达:

a-FRIEND-c-OWN-"car"
a-FRIEND-b-FRIEND-c-OWN-"car"
如何确保我只获得一次“c”?

只需在返回语句中添加修饰符即可:

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

或者,您可以
返回p,count(*)
以指示有多少条路径,这可能表示您可以嵌入id检查;-)<代码>匹配(me:PERSON{id:{userId}}).