You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gremlin技术问询:查找指定属性顶点并自动创建缺失顶点

Gremlin批量查找/创建顶点实现

核心查询代码(两种写法)

写法1:使用identity()引用当前值

g.inject("Frank", "Sam", "Peter")
  .unfold()
  .coalesce(
    __.V().hasLabel("person").has("name", __.identity()),
    __.addV("person").property("name", __.identity())
  )

写法2:使用as()+select()标记引用(可读性更强)

g.inject("Frank", "Sam", "Peter")
  .unfold()
  .as("targetName")
  .coalesce(
    __.V().hasLabel("person").has("name", select("targetName")),
    __.addV("person").property("name", select("targetName"))
  )

代码拆解说明

  • inject("Frank", "Sam", "Peter"):将目标姓名列表注入到Gremlin遍历流,作为处理的起始数据
  • unfold():把注入的列表拆分成单个元素的遍历流,确保每个姓名都会被独立处理
  • coalesce(...):Gremlin的短路逻辑遍历,会依次执行内部的两个步骤,优先返回第一个成功执行的结果:
    1. 第一步:尝试查找label为person、name属性匹配当前遍历姓名的顶点
    2. 第二步:如果第一步未找到匹配顶点,则创建一个新的person顶点,并将当前遍历的姓名赋值给name属性

效果验证

初始存在name为"Sam"的person顶点时,执行上述查询后:

  • 不会重复创建"Sam"的顶点
  • 会自动创建"Frank"和"Peter"对应的person顶点
  • 最终会存在三个分别对应三个姓名的person顶点,完全符合需求

内容的提问来源于stack exchange,提问作者Kiwifranky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 05:12:43