繁体   English   中英

Neo4j Cypher查询返回不同的节点集

[英]Neo4j Cypher query RETURN distinct set of nodes

我有一个简单的社交网络图数据库模型。 用户可以关注其他用户并发布帖子。 我正在尝试获取用户已发布的所有帖子以及该用户关注的任何人已发布的所有帖子的列表

START a=node:node_auto_index(UserIdentifier = "USER0") 
MATCH (a)-[:POSTED]->(b), (a)-[:FOLLOWS]->(c)-[:POSTED]->(d) 
RETURN b, d;

它返回两者的叉积,即b中所有值与d中所有值的元组。 (bxd)我只想列出一连串的帖子。 我该怎么做呢? 我需要做两个单独的查询吗?

网址为https://groups.google.com/forum/?fromgroups=#!topic/neo4j/SdM7bKNRDEA

START a=node:node_auto_index(UserIdentifier = "USER0") 
MATCH (a)-[:POSTED]->(b)
WITH a, collect(b) as posts
MATCH (a)-[:FOLLOWS]->(c)-[:POSTED]->(d) 
RETURN posts, collect(d) as followersPosts;

您现在可以执行的另一种方法(以及更干净的恕我直言)是利用可变长度关系。

START user=node...
MATCH (user) -[:FOLLOWS*0..1]-> (following) -[:POSTED]-> (post)
RETURN post

这种方法的优点是,它使您可以统一汇总自己的查询和朋友/跟随的查询。 例如排序,限制,分页等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM