gremlin - 根据条件获取顶点及其边
问题描述
我有一组不那么复杂的数据,但我正在努力进行查询。
假设我有一个 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 集中)。
解决方案
假设您不想要所有路径并且只需要访问所有相关顶点,您可以执行类似的操作。
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]]
推荐阅读
- unit-testing - VueJS - 开玩笑:如何测试/监视在观察者内部调用的方法?
- python - 在 Jetty 或 tomcat 中部署我的 python 烧瓶 API 时需要帮助
- python - 在单个 ascii 文件中每隔 N 组数据添加一个空行
- javascript - Chart.JS 中的固定时间范围
- ksqldb - KSQL Group By 删除以前的值并仅使用 LAST
- python - Django Rest Framework - 在 python 客户端中反序列化响应时重用模型逻辑
- reactjs - 使 history.push 在 React app.tsx 中可用
- sql - 为什么datatable会改变日期的格式
- python - 在 python 中删除目录几乎总是会导致文件夹“锁定”并且由于权限错误而无法删除
- reflection - 如何在 Mvx.IoCProvider.Register 中提供类似 OnActivate(在 Autofac 中)的功能