2

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

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

4

2 回答 2

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()

看...

于 2012-07-02T16:22:47.033 回答
0

我知道您要了一个 gremlin,但您说您也对 cypher 持开放态度,这可能代表不同格式的查询

START
    user=node(4)
MATCH
    user-[:POSTED]->posts,
    user-[:KNOWS]->()-[:POSTED]->friendPosts
RETURN
    posts, friendPosts

这将返回您使用 Cypher 寻求的结果。

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

于 2012-07-02T21:58:57.987 回答