遍历节点,但在结果中使用Gremlin在Neo4J中包含起始节点

时间:2012-07-02 16:05:16

标签: c# neo4j gremlin neo4jclient

我有一个图表代表用户和他们写的一些文章。我需要创建类似于活动流的内容,包括用户和朋友写的文章。

http://twitpic.com/a342f4

我可以拥有所有用户朋友的帖子:

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但是如果有人用其他东西有更好的解决方案它也会没问题,此时我仍然可以改变我正在使用的一些工具

2 个答案:

答案 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寻找的结果。

//编辑说明:这将首先遍历并抓取用户的所有帖子,然后将遍历到朋友,现在是匿名的,因为我们实际上并不需要朋友信息,然后遍历到朋友帖子。