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

在TinkerPop Gremlin中如何查询集合属性为输入集合子集的顶点?

基于Gremlin的Set属性子集匹配查询方案

场景说明

  • 图顶点包含Set类型属性foo,需要筛选所有foo属性集合是给定输入集合子集的顶点
  • 示例顶点创建语句:g.addV('v').property('foo', 'bar').property('foo','baz')
  • 匹配规则:
    1. 输入参数为["bar", "quux", "quuz"]时,顶点foo属性包含不在输入集合的baz,不符合子集要求,无返回结果
    2. 输入参数为["bar", "quux", "quuz", "baz"]时,顶点foo属性["bar", "baz"]完全属于输入集合,符合要求,顶点被返回

可用查询语句

将语句中的inputSet替换为你实际的输入集合即可:

g.V().hasLabel('v')
  .has('foo') // 过滤掉无foo属性的顶点,不需要可删除
  .not(
    values('foo').is(without(inputSet))
  )

逻辑解释

上述语句是标准TinkerPop Gremlin语法,全量图数据库兼容:

  • has('foo')用于提前过滤没有foo属性的顶点,如果你需要保留foo为空集合的顶点(空集属于任意集合的子集),可以删除这行过滤条件
  • not(values('foo').is(without(inputSet)))是核心逻辑:表示不存在任何一个foo属性值不在输入集合中,等价于顶点foo的所有值都属于输入集合,即foo集合是输入集合的子集

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:36:01