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

如何在Azure Cosmos DB中使用嵌套属性定义唯一键约束

如何在Cosmos DB中为嵌套JSON属性定义唯一键约束

你遇到的问题是因为Cosmos DB的唯一键路径使用的是JSON路径语法,而非你习惯的点分隔符写法。下面是具体的解决方法和细节说明:

正确的路径语法

针对你提供的嵌套文档结构,正确的唯一键路径需要用斜杠/来遍历JSON层级,替换掉原来的点.。你需要把路径修改为:

  • /data/property1
  • /data/property2
  • /data/property3

在Azure门户中输入这三个路径,就能正确识别嵌套在data对象下的目标属性,不会再出现解析错误。

为什么原来的写法会报错

Cosmos DB的唯一键路径解析有明确规则:

  • 必须用斜杠/表示JSON对象的层级关系,比如/data/property1代表根对象下的data属性,再下一层的property1属性
  • 不能使用点.作为层级分隔符,这是你收到Error parsing the unique key path错误的核心原因
  • 路径中禁止包含通配符(如*)或其他无效字符,这也是报错信息里明确提示的要求

验证匹配你的文档结构

你的文档结构示例:

{
  "id": "4d9cd2c2-8ae7-40b9-a78e-7e8879935149",
  "SystemProperties": { "Device": "Device1" },
  "Scenario": { "Type": "Event" },
  "data": { 
    "property1": "SLIC", 
    "property2": "1.1", 
    "property3": "1.1"
  }
}

使用/data/property1这类路径,Cosmos DB会精准定位到data对象下的对应字段,以此创建组合唯一键约束,确保这三个字段的取值组合在容器内唯一。

额外注意事项

  • 路径区分大小写:要保证路径中的属性名和文档里的属性名大小写完全一致(比如文档里是data,路径就不能写成/Data/property1)
  • 可选属性处理:如果部分文档可能缺失data下的某个属性,Cosmos DB会将缺失属性视为null,包含null值的组合也会受唯一键约束限制
  • 组合唯一键特性:你设置的三个路径会形成组合唯一键,只有当三个属性的取值完全相同时,才会触发唯一键冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:31:38