我有一个(:User)
密集节点,其关系如下:
(:User)-[:SUBSCRIBED]->(:User)
(:User)-[:CONNECTED]->(:SocialNetwork)
如果我执行下面的查询
MATCH (u:User {UserId:id})
MATCH (u)-[:SUBSCRIBED]->(s)
RETURN s
我得到用户订阅的最近订阅的预期。
但是使用其他匹配模式的相同查询会对此排序进行制动
MATCH (u:User {UserId:id})
MATCH (u)-[:SUBSCRIBED]->(s)
OPTIONAL MATCH (s)-[:CONNECTED]->(sn)
RETURN s, COUNT(sn.FriendCount)
有人可以解释为什么最近的排序并没有在第二个例子中起作用。
答案 0 :(得分:1)
您的查询无法保证订单,因为您没有ORDER
子句,运行相同的查询1000次,我确信订单会在某个时刻发生变化。
您应该在查询结束时订购:
MATCH (u:User {UserId:id})
MATCH (u)-[:SUBSCRIBED]->(s)
OPTIONAL MATCH (s)-[:CONNECTED]->(sn)
RETURN s, COUNT(sn.FriendCount)
ORDER BY s.time // ? property representing the time