gremlin - 是否有 Gremlin NULL 关键字或类似的不是遍历步骤的东西?
问题描述
问题
我一直在优化我们基于图形构建的应用程序的性能(Cosmos DB 上的 Gremlin API),而且我通常都过得很糟糕。经过大量的挖掘,我意识到一堆痛苦是由不必要的遍历处理引起的。如果我想获取所有 foo 顶点以及这些边缘可能具有的任何条形边缘(想想 SQL 的左连接),我会在 Gremlin 中编写以下内容:
g.V().hasLabel("foo").as("foos").
coalesce(out("bar"),constant()).as("bars").
select("foos","bars")
结果将包含一组元组,其中项目 1 名为 foos,项目 2 名为 bar。Foos 总是有一个顶点,而 bar 有一个边或一个 []。
不是为每个顶点处理一个新的匿名遍历,而是constant()
一个空值会使整个事情变得更有效率。
我到处寻找,但在 Gremlin 中找不到 null 。有人有想法么?
解决方案
null
在 Gremlin 中没有返回值的概念。这是更烦人的部分之一,但您必须返回一个值。
此外,我认为您可以通过使用 project() 语句而不是遍历图形然后选择值来简化遍历。它会是这样的:
g.V().hasLabel("foo").
project('foo', 'bars').
by(__.id()).
by(__.outE('bars').fold().coalesce(unfold(), constant('')))
推荐阅读
- python - cv2.HoughCircles 检测环形图案,但不检测构成环形的圆圈
- sql - 具有最接近时间戳的 SQL 自联接
- angular - 如果登录后找不到值,注销用户?
- html - 如何使 div 的宽度成为任何内容?
- jquery - 检查链接是否包含字符串并向其添加 rel='supported' 属性
- java - 用 PDFbox 和 boxable 替换 Itext
- sql-server - AWS 无服务器离线和 MS-SQL 数据库
- javascript - PDF 脚本日期周
- r - 希望在 r 的 ANOVA 分析中包含子块
- javascript - await 仅在异步函数中有效,同时我已经将“异步”放入函数中