4

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

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

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

4

2 回答 2

1

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;
于 2012-11-01T16:30:47.823 回答
1

您现在可以做到的另一种方法(恕我直言,更简洁的方法)是利用可变长度关系。

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

这种方式的优点是它可以让您统一聚合您自己的查询和您的朋友/关注者的查询。例如排序、限制、分页等。

于 2014-06-17T02:23:35.720 回答