首页 > 解决方案 > 根据条件获取顶点及其边

问题描述

我有一组不那么复杂的数据,但我正在努力进行查询。

假设我有一个 id 为 1 的主顶点。该顶点具有到顶点 10、11 和 12 的边。这些顶点中的每一个都有到 100 和 101 的边。

如果我做这样的事情:

g.V(1).inE('type').project('e', 'v').by().by(outV().valueMap())

我得到一个顶点列表:10、11 和 12,但我没有得到 100 和 101 的列表。我假设我可以用合并或其他东西做某事,但我无法弄清楚正确的做法这个。

此外,我想根据一个 100 和 101 属性过滤 10、11 和 12 个顶点。这意味着如果 100 具有 x = 1 之类的属性,而 101 具有 x = 2 之类的属性,我只想获取指向 x = 1 顶点的顶点(在 10-12 集中)。

标签: gremlinamazon-neptune

解决方案


假设您不想要所有路径并且只需要访问所有相关顶点,您可以执行类似的操作。

gremlin> g.addV().property(id,'1').as('1').
......1>   addV().property(id,'10').as('10').
......2>   addV().property(id,'11').as('11').
......3>   addV().property(id,'12').as('12').
......4>   addV().property(id,'100').property('p',1).as('100').
......5>   addV().property(id,'101').property('p',2).as('101').
......6>   addE('link').from('1').to('10').
......7>   addE('link').from('1').to('11').
......8>   addE('link').from('1').to('12').
......9>   addE('link').from('10').to('100').
.....10>   addE('link').from('11').to('101')
==>e[61381][11-link->101]

gremlin> g.V('1').out().store('a').out().has('p',2).store('a').cap('a').dedup()
==>[v[10],v[11],v[12],v[101]]  

推荐阅读