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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/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
Neo4j 如何获得具有相似/相同关系的节点?_Neo4j_Cypher - Fatal编程技术网

Neo4j 如何获得具有相似/相同关系的节点?

Neo4j 如何获得具有相似/相同关系的节点?,neo4j,cypher,Neo4j,Cypher,假设我们有如下数据: create (a:Person{name:'andy'})-[:LIKES]->(:Animal{name:'cat'}), (b:Person{name:'bob'})-[:LIKES]->(:Animal{name:'cat'}), (c:Person{name:'charlie'})-[:LIKES]->(:Animal{name:'cat'}), (a)-[:LIKES]->(:Animal{name:'dog'}), (b)-[:LIKE

假设我们有如下数据:

create
(a:Person{name:'andy'})-[:LIKES]->(:Animal{name:'cat'}),
(b:Person{name:'bob'})-[:LIKES]->(:Animal{name:'cat'}),
(c:Person{name:'charlie'})-[:LIKES]->(:Animal{name:'cat'}),
(a)-[:LIKES]->(:Animal{name:'dog'}),
(b)-[:LIKES]->(:Animal{name:'dog'})
我想知道哪个人和安迪有相同的喜好。 安迪喜欢“猫”和“狗”,所以鲍勃应该出现,但查理不应该出现,因为他不喜欢“狗”

如何形成这样的查询? 我希望这个查询能够与很多喜欢的人一起工作,所以在未来有100只动物的时候,我仍然可以找到和安迪一样有品味的人

我试过这样的东西

match
(p:Person{name:'andy'})-[:LIKES]->(a:Animal),
(a)<-[:LIKES]-(p2:Person)
return p,a,p2
匹配
(p:Person{name:'andy})-[:LIKES]->(a:Animal),

(a) 如果您想找到完全相同口味的人,可以使用以下查询:

MATCH (p:Person{name:'andy'})-[:LIKES]->(a:Animal)
WITH collect(a) AS likes
MATCH (p2:Person)
WHERE all(n IN likes WHERE exists((p2)-[:LIKES]->(n)))
RETURN p2, likes

如果您想找到完全相同口味的人,可以使用以下查询:

MATCH (p:Person{name:'andy'})-[:LIKES]->(a:Animal)
WITH collect(a) AS likes
MATCH (p2:Person)
WHERE all(n IN likes WHERE exists((p2)-[:LIKES]->(n)))
RETURN p2, likes