neo4j-查找具有强关系的节点

neo4j-查找具有强关系的节点,neo4j,querying,Neo4j,Querying,我在我的图表中有位置和人物作为标签,并且一种关系“知道位置”。比如: 一个人通常知道很多地方 现在,我想通过地点(有许多共同的“地点”)查找具有“强烈”关系的人员,例如,我想查询所有共享至少3个不同地点的人员,类似这样的查询(不起作用!): 匹配 (a:人)-[:知道地点]->(x:地点)(y:地点)(z:地点)给你: MATCH (a:person)-[:knows_the_place]->(x:place)<-[:knows_the_place]-(b:person) WITH

我在我的图表中有位置和人物作为标签,并且一种关系“知道位置”。比如:

一个人通常知道很多地方

现在,我想通过地点(有许多共同的“地点”)查找具有“强烈”关系的人员,例如,我想查询所有共享至少3个不同地点的人员,类似这样的查询(不起作用!):

匹配
(a:人)-[:知道地点]->(x:地点)(y:地点)(z:地点)给你:

MATCH (a:person)-[:knows_the_place]->(x:place)<-[:knows_the_place]-(b:person)
WITH a, b, count(x) AS count
WHERE count >= 3
RETURN a, b, count
MATCH(a:person)-[:知道地点]->(x:place)=3
返回a、b、计数
订购:

MATCH (a:person)-[:knows_the_place]->(x:place)<-[:knows_the_place]-(b:person)
RETURN a, b, count(x) AS count
ORDER BY count(x) DESC

MATCH(a:person)-[:知道地点]->(x:place)count关键字的可能重复项是键;)此外,小挑剔:Neo4j风格通常是有标签的情况下。这里有一个指南:太好了,谢谢!:-)特别有用的是“AS”命令,我不知怎么错过了它。这对我的这项任务和其他任务都非常有用!但我也注意到这样一个查询的性能很慢。有没有什么通用的方法来“监视”neo4j查询,以了解是什么让它变慢的?或者我只需要知道,什么样的查询比较昂贵?您可以使用
EXPLAIN
和/或
PROFILE
来预处理您的查询。
PROFILE
子句甚至可以在web控制台中提供良好的视觉输出
MATCH (a:person)-[:knows_the_place]->(x:place)<-[:knows_the_place]-(b:person)
WITH a, b, count(x) AS count
WHERE count >= 3
RETURN a, b, count
MATCH (a:person)-[:knows_the_place]->(x:place)<-[:knows_the_place]-(b:person)
RETURN a, b, count(x) AS count
ORDER BY count(x) DESC