Neo4j 给定类型的关系小于X的密码匹配节点
有了这些数据,我想用密码查询neo4j数据库,查找拥有少于X个朋友的所有用户,其中X是他们自己的Neo4j 给定类型的关系小于X的密码匹配节点,neo4j,cypher,Neo4j,Cypher,有了这些数据,我想用密码查询neo4j数据库,查找拥有少于X个朋友的所有用户,其中X是他们自己的friend\u limit属性。我尝试了几个COUNT查询,但未能得到一致的结果 例如,在本例中,我希望收到除Joe(他有两个朋友中的两个)和Ella(how有一个朋友中的一个)之外的所有用户的结果集 编辑:我已经做到了这一点,但我找不到一种方法将Ann也包括在结果集中,她可能失踪了,因为她没有任何与关系的朋友,\u因此无法匹配部分 MATCH (n:User)-[r:FRIENDS_WITH]
friend\u limit
属性。我尝试了几个COUNT
查询,但未能得到一致的结果
例如,在本例中,我希望收到除Joe(他有两个朋友中的两个)和Ella(how有一个朋友中的一个)之外的所有用户的结果集
编辑:我已经做到了这一点,但我找不到一种方法将Ann也包括在结果集中,她可能失踪了,因为她没有任何与关系的
朋友,\u因此无法匹配
部分
MATCH (n:User)-[r:FRIENDS_WITH]-(u:User)
WITH n, count(r) AS nr_of_friends
WHERE nr_of_friends < n.friend_limit
RETURN n, n.friend_limit, nr_of_friends
匹配(n:User)-[r:FRIENDS\u WITH]-(u:User)
使用n,将(r)算作n个朋友
其中,朋友数<朋友数限制
返回n,n.朋友数限制,朋友数
不确定是否有更好的方法
不确定是否有更好的方法可以做到这一点我会用与@luane类似的方法,只是简单一点:
MATCH (u:User)
OPTIONAL MATCH (u)-[:FRIENDS_WITH]-(f:User)
WITH u, count(f) AS friendCount
WHERE friendCount < u.friend_limit
RETURN u, friendCount
匹配(u:用户)
可选匹配(u)-[:朋友与]-(f:用户)
使用u,将(f)计数为friendCount
其中friendCount
我离开了
f:User
,因为我认为这会让它更有效率,特别是如果模型在以后更改,以便用户可以与用户以外的其他人成为朋友(但可能会有不同的关系类型)。,再简单一点:
MATCH (u:User)
OPTIONAL MATCH (u)-[:FRIENDS_WITH]-(f:User)
WITH u, count(f) AS friendCount
WHERE friendCount < u.friend_limit
RETURN u, friendCount
匹配(u:用户)
可选匹配(u)-[:朋友与]-(f:用户)
使用u,将(f)计数为friendCount
其中friendCount
我离开了
f:User
,因为我认为这会让它更有效率,特别是如果模型在以后更改,以便用户可以与用户以外的其他人成为朋友(但可能会有不同的关系类型)。这是期望的结果,谢谢!我不会接受,只是看看有没有人能想出解决比赛的办法。我不知道这是否是一个问题。酷,我也在等待,看看有什么更好的方法来做到这一点。在一个有大量用户的图上,这可能是一个问题,因为你要匹配所有用户,但你又想这样做:-)我认为你不需要u的,除非用户可以与非用户成为朋友,否则你不需要绑定“其他”用户(f
)。我尝试用和分析查询,以查看差异,但分析程序在java.lang.AssertionError中失败:无法分析同一管道两次,不知道为什么。这是理想的结果,谢谢!我不会接受,只是看看有没有人能想出解决比赛的办法。我不知道这是否是一个问题。酷,我也在等待,看看有什么更好的方法来做到这一点。在一个有大量用户的图上,这可能是一个问题,因为你要匹配所有用户,但你又想这样做:-)我认为你不需要u
的,除非用户可以与非用户成为朋友,否则你不需要绑定“其他”用户(f
)。我尝试使用和分析查询,以查看差异,但分析程序使用java.lang.AssertionError失败:无法分析同一管道两次,不知道原因。您可能可以拆分查询,要对有
关系的朋友的人使用正常匹配,对没有关系的人使用另一个正常匹配。您可能可以拆分查询,要对有
关系的朋友的人使用正常匹配,对没有关系的人使用另一个正常匹配。确实,with似乎是多余的。尽管仍然不确定是否有办法删除整个用户匹配项。我认为,即使按照Michael的建议拆分查询,也意味着需要一个完整的用户匹配,以找到没有任何Friendstree的平衡用户,WITH似乎是多余的。尽管仍然不确定是否有办法删除整个用户匹配项。我认为,即使按照Michael的建议拆分查询,也意味着需要进行完整的用户匹配,以找到没有任何朋友的余额用户
MATCH (u:User)
WITH u
MATCH (u:User)
OPTIONAL MATCH (u)-[:FRIENDS_WITH]-(f:User)
WITH u, count(f) AS friendCount
WHERE friendCount < u.friend_limit
RETURN u, friendCount