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

如何在Apache TinkerPop Gremlin中查询属性基数及判断类型?

在Apache TinkerPop Gremlin中查询属性基数的方法

一、基于Schema的查询(适用于有预定义Schema的图系统)

如果你的图系统(如JanusGraph、Neo4j)支持Schema定义,可直接通过Schema API查询属性的基数:

// 查询名为"email"的属性的基数
graph.schema().properties('email').cardinality()

执行后会返回Cardinality.SINGLE或Cardinality.SET这类枚举值,直接对应属性的基数类型。

二、通用查询方式(兼容所有Gremlin兼容图系统)

无论图是否有Schema,都可以通过获取属性实例的元数据判断基数:

  1. 获取单个属性实例并查询基数:
// 获取某个顶点上"email"属性的基数
g.V().hasLabel('person').has('email').limit(1).properties('email').next().cardinality()
  1. 判断属性基数是否为SET/SINGLE:
// 判断是否为SET基数
g.V().hasLabel('person').has('email').limit(1).properties('email').next().cardinality() == Cardinality.SET

// 判断是否为SINGLE基数
g.V().hasLabel('person').has('age').limit(1).properties('age').next().cardinality() == Cardinality.SINGLE

注意事项

  • 对于无Schema的图系统(如TinkerGraph),属性的基数在添加时指定(默认是SINGLE),同一属性在不同顶点上可能存在不同基数(这种场景较少见),若要全局确认,需遍历所有包含该属性的顶点检查。
  • 添加不同基数属性的示例:
// 添加SET基数的属性(允许多个值)
g.V(1).property(Cardinality.SET, 'email', 'a@example.com').property(Cardinality.SET, 'email', 'b@example.com')

// 添加SINGLE基数的属性(仅保留最新值)
g.V(1).property(Cardinality.SINGLE, 'age', 30)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:05:26