如何在 gremlin 中过滤 select 之后?
How can I filter after select in gremlin?
我已经在变量中保存了一个顶点列表。
tv = g.V().hasLabel('user').has('name', 'xxyy').out().out().dedup().toList()
该列表包含标签为 'topic' 的顶点。
我正在尝试进行遍历以查找在上述变量中具有相同主题的内容。
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]}
...
这将给出所有内容对及其主题。我只想要主题在电视内的内容顶点。
我不知道如何使用过滤器或在哪里进行过滤。任何帮助表示赞赏。
谢谢!
如果您需要变量 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')
顺便说一句:您应该始终在遍历中指定边标签。
我已经在变量中保存了一个顶点列表。
tv = g.V().hasLabel('user').has('name', 'xxyy').out().out().dedup().toList()
该列表包含标签为 'topic' 的顶点。
我正在尝试进行遍历以查找在上述变量中具有相同主题的内容。
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]}
...
这将给出所有内容对及其主题。我只想要主题在电视内的内容顶点。
我不知道如何使用过滤器或在哪里进行过滤。任何帮助表示赞赏。
谢谢!
如果您需要变量 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')
顺便说一句:您应该始终在遍历中指定边标签。