azure-cosmosdb - 如何在折叠 gremlin 之后使用以前存储的项目
问题描述
首先,我使用的是 azure cosmos graph db。
我经常看到这种模式:
out('an-edge').fold().coalesce(unfold(),addV('incoming-schedule'))
我想在合并中执行 addV 后立即添加一条边。我一直试图在一个简单的例子中做到这一点:
g.V('any-vertex-id').as('a').out('an-edge').coalesce(unfold(),addV('new-vertex').addE('to-v').from('a'))
在 fold() 之后“a”似乎不再存在,因为它是一个障碍步骤。我尝试了存储和聚合,但我不能正确理解这些。是否有可能在 fold() 之后获得参考?我需要它,因为它可能会在查询中引用以前的 addV,而我还没有 id。
解决方案
你在这里有什么要求?您是否只想在 out('an-edge') 不存在时创建一个新顶点?
如果是这样的话,我会试试这个:
g.V('any-vertex-id').as('a').coalesce(out('an-edge'), addV('new-vertex').addE('to-v').from(select('a')))
当需要聚合上一步的所有输出时,通常使用 Fold()。我不认为,在这种情况下这是必要的。
http://tinkerpop.apache.org/docs/current/reference/#fold-step
推荐阅读
- asp.net-core - Octopus:appsettings.json 变量替换 3 级层次结构
- javascript - 如何将 Python 程序添加到 Web 项目中?
- postgresql - TypeORM中的Postgres OVERLAPS日期函数
- python - 在熊猫中像树方法一样迭代
- android - 更改活动时程序突然结束
- javascript - 使显示的第一个和最后一个字符的数量响应可用的宽度
- c++ - 在邻接列表中返回空边描述符 [C++ BGL]
- java - 修复 gradle 中的自定义任务。想要通过在执行阶段手动运行它
- javascript - 自动将新对象添加到 JSON
- javascript - 在 yarn2 上,我可以在根 package.json 和子仓库之间共享依赖项或 devDependencies 吗?