我有一个图表代表用户和他们写的一些文章。我需要创建类似于活动流的内容,包括用户和朋友写的文章。
我可以拥有所有用户朋友的帖子:
g.v(4).out("KNOWS").out("POSTED")
并返回
v[9]
v[11]
但我还需要包含使用查询检索的原始用户的帖子:
g.v(4).out("POSTED")
返回
v[10]
如何在不必执行2个查询的情况下拥有所有帖子,然后再将它们合并? 我需要得到这样的回报:
v[9]
v[10]
v[11]
谢谢
PD:我正在使用Gremlin和Neo4jClient但是如果有人用其他东西有更好的解决方案它也会没问题,此时我仍然可以改变我正在使用的一些工具答案 0 :(得分:2)
使用Gremlin的聚合步骤和Groovy独特的方法:
posts = []
g.v(4).out('POSTED').aggregate(posts).iterate()
g.v(4).out('KNOWS').out('POSTED').aggregate(posts).iterate()
return posts.unique()
请参阅...
答案 1 :(得分:0)
我知道你要求一个gremlin,但你说你也对cypher开放,这可能代表不同格式的查询
START
user=node(4)
MATCH
user-[:POSTED]->posts,
user-[:KNOWS]->()-[:POSTED]->friendPosts
RETURN
posts, friendPosts
这将返回您使用Cypher寻找的结果。
//编辑说明:这将首先遍历并抓取用户的所有帖子,然后将遍历到朋友,现在是匿名的,因为我们实际上并不需要朋友信息,然后遍历到朋友帖子。