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

Gremlin - Cosmos DB新增顶点时如何在单顶点内存储多个列表

Gremlin操作Cosmos DB新增带多列表属性顶点的实现方案

Azure Cosmos DB 的 Gremlin API 中,列表属性通过指定**多值基数(Cardinality.list)**实现,嵌套对象可直接存储(需环境支持复杂类型)或序列化为JSON字符串存储(通用兼容方案)。


方案1:直接存储嵌套对象(推荐,环境支持时用)

Gremlin 中调用 property() 方法时,第一个参数传入 list 声明该属性为列表类型,后续直接传入嵌套对象即可,匹配你需求的查询语句如下:

g.addV('person')
  // 指定顶点id和label
  .property(id, '95fcfa87-1c03-436d-b3ca-340cea926ee9')
  // 新增States列表属性,单个元素直接传入对象
  .property(list, 'States', [
    "DeviceCount": "12",
    "SC_ItemStatus": "2",
    "SC_ItemWarningStatus": "0",
    "SC_SysemStandardPercentage": "1"
  ])
  // 新增log列表属性
  .property(list, 'log', [
    "user": "user@user.dk",
    "action": "update",
    "timestamp": "22-03-2017",
    "field": "firstName",
    "oldValue": "Marco"
  ])

如果需要给单个列表添加多个元素,可直接在参数后追加,或多次调用 property(list, '属性名', 新元素),会自动追加到列表末尾,不会覆盖原有值。


方案2:通用兼容方案(JSON序列化存储)

如果你的Gremlin驱动或Cosmos DB版本不支持直接存储嵌套对象,可先将列表元素序列化为JSON字符串再存入,查询时在业务侧反序列化即可:

g.addV('person')
  .property(id, '95fcfa87-1c03-436d-b3ca-340cea926ee9')
  .property(list, 'States', '{"DeviceCount":"12","SC_ItemStatus":"2","SC_ItemWarningStatus":"0","SC_SysemStandardPercentage":"1"}')
  .property(list, 'log', '{"user":"user@user.dk","action":"update","timestamp":"22-03-2017","field":"firstName","oldValue":"Marco"}')

常用补充操作

  • 覆盖已有列表:先删除原有属性再重新赋值
    g.V('95fcfa87-1c03-436d-b3ca-340cea926ee9').properties('log').drop()
     .property(list, 'log', 新元素1, 新元素2)
    
  • 追加列表元素:直接调用带list基数的property方法即可
    g.V('95fcfa87-1c03-436d-b3ca-340cea926ee9').property(list, 'log', 新日志对象)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:15:01