我已经在一个变量中保存了一个顶点列表。
tv = g.V().hasLabel('user').has('name', 'xxyy').out().out().dedup().toList()
该列表包含带有标签“主题”的顶点。
我正在尝试遍历以在上面的变量中找到具有相同主题的内容。
g.V().hasLabel('user').has('name', 'xxyy').out().in().hasLabel('influencer')
.dedup().out().hasLabel('content').as('content').out().as('topic')
.select('content', 'topic')
==>{content=v[22663384], topic=v[23412864]}
==>{content=v[22663384], topic=v[23412864]}
==>{content=v[22663384], topic=v[23445624]}
==>{content=v[22663384], topic=v[23445624]}
==>{content=v[22663384], topic=v[23548032]}
==>{content=v[22663384], topic=v[23548032]}
==>{content=v[22663384], topic=v[23597056]}
==>{content=v[22663384], topic=v[23597056]}
==>{content=v[22663384], topic=v[24039672]}
==>{content=v[22663384], topic=v[24039672]}
==>{content=v[22663384], topic=v[64716880]}
==>{content=v[22663384], topic=v[64716880]}
==>{content=v[22663384], topic=v[65163456]}
...
这将给出所有内容对及其主题。我只想要主题在电视内的内容顶点。
我无法弄清楚如何使用过滤器或在哪里进行过滤。任何帮助表示赞赏。
谢谢!
答案 0 :(得分:2)
如果您还需要变量tv
,那么第二个查询将是:
g.V().hasLabel('user').has('name', 'xxyy').
out().in().hasLabel('influencer').
dedup().
out().hasLabel('content').as('content').
out().is(within(tv)).as('topic').
select('content', 'topic')
但是,如果tv
的唯一目的是成为过滤器变量,则无需这样做。您可以在一个查询中完成所有操作:
g.V().hasLabel('user').has('name', 'xxyy').
out().sideEffect(out().aggregate('tv')).barrier().
in().hasLabel('influencer').
dedup().
out().hasLabel('content').as('content').
out().where(within('tv')).as('topic').
select('content', 'topic')
顺便说一句:您应该始终在遍历中指定边缘标签。