Neo4j Cypher查询RETURN不同的节点集

时间:2012-10-30 09:38:54

标签: neo4j cypher

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

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

返回两者的叉积,b中所有值的元组与d中的所有值相连。 (b x d)我想直接列出一些帖子。我该怎么做呢?我是否需要进行两次单独的查询?

2 个答案:

答案 0 :(得分:1)

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

进行了An
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;

答案 1 :(得分:1)

现在你能做到的另一种方式(以及更清洁的恕我直言)是利用可变长度的关系。

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

这种方式的优势在于它可以让您汇总自己的查询和朋友/关注者。统一查询。例如。排序,限制,分页等。