gremlin - Gremlin Python:如果存在,如何使用合并来获取顶点,否则插入
问题描述
如果存在这样的顶点,是否可以使用 Gremlincoalesce
步骤按 id(或属性)选择顶点,否则插入顶点?我尝试使用以下方法执行此操作,但出现'list' object has no attribute 'coalesce'
错误,我可以看到这是由.fold().next()
返回 python 列表对象引起的:
my_vertex = g.V(1).fold().next().coalesce(__.unfold(), g.addV(
'my_label'
).property(
T.id,
1
).property(
'test', 'foo'
).property(
'name', 'my_vertex_name'
).property(
'created_timestamp', 1575480467
).next()
)
这样做有什么性能优势,还是我应该简单地将其分解为初始顶点查询的 hasNext() 上的 if/else?
解决方案
您需要next
从查询中删除 。接下来是终端步骤。如果没有next
查询应该按照您期望的方式工作,如果 V(1) 存在它不会创建它,否则它会。除此之外,这是进行 upsert 查询的好方法。
如果您使用的是 Neptune,请记住 ID 是字符串,因此应为 V('1')。
推荐阅读
- docker - Docker 网络,从 windows 主机连接到 linux 容器
- javascript - JQuery datepicker验证问题
- javascript - 当 document.hidden 为 true 时,Chrome 中不会触发滚动事件。任何解决方法?
- python - 通过创建字典替换单词
- reactjs - 反应,增量全局变量不按预期工作
- mysql - 为什么将子查询从 FROM 移动到 SELECT 会导致 NULL?
- c# - 为什么我的 DataGridView 列没有按应有的颜色着色?
- javascript - 我找不到这个反应代码有什么问题,但是当尝试 console.log 项目时,我得到未定义的一切期望注释字段
- amazon-web-services - 来自 EC2 (VPC) 的 AWS S3 访问点访问被拒绝
- java - 当我使用 try 和 catch 块时,Junit 测试失败。为什么?