我如何定义Azure Cosmos DB中嵌入阵列中涉及属性的唯一键?
在Azure Cosmos DB中,支持唯一密钥。每个唯一键定义为一组表示存储文档中的值的路径。这种路径的一个例子是我如何定义Azure Cosmos DB中嵌入阵列中涉及属性的唯一键?,azure,azure-cosmosdb,azure-cosmosdb-sqlapi,Azure,Azure Cosmosdb,Azure Cosmosdb Sqlapi,在Azure Cosmos DB中,支持唯一密钥。每个唯一键定义为一组表示存储文档中的值的路径。这种路径的一个例子是/contact/firstName。官方文档(事实上根本没有提到)不清楚这些路径如何通过文档中的嵌入式数组应用,或者当路径导航到基数大于1的嵌套文档时,如何应用唯一的键语义 例如,假设我有一个这样的文档来存储一个用户组和一组成员用户: { "id": "ABCD1234", "name": "Administrators", "members": [ {
/contact/firstName
。官方文档(事实上根本没有提到)不清楚这些路径如何通过文档中的嵌入式数组应用,或者当路径导航到基数大于1的嵌套文档时,如何应用唯一的键语义
例如,假设我有一个这样的文档来存储一个用户组和一组成员用户:
{
"id": "ABCD1234",
"name": "Administrators",
"members":
[
{
"userId": 1,
"enabled": true
},
{
"userId": 2,
"enabled": true
}
]
}
我希望组名在整个逻辑分区中是唯一的,因此我添加了一个路径为/groupName
的唯一键
我还希望确保成员是唯一的,即相同的userId
值在给定组中不会出现多次。天真的是,我可能会尝试创建一个具有路径/name
和/members/userId
的唯一键。但这不起作用,唯一键似乎没有效果
我试过几种不同的方法,但都没有达到我预期的效果
所以我的问题是:
成员
对象属性的唯一key,并试图保存两个都没有成员的不同组,会发生什么?那么,对于这两个组,这些键在逻辑上不会计算为null
或undefined
,从而阻止我保存其中一个感谢您提供的帮助澄清这一问题的见解 唯一键不会遍历到文档中的数组中,这就是为什么它们没有这样记录的原因 有关什么是逻辑分区的详细信息,请参阅上的文档
如果您想获得所描述的唯一性,请在逻辑分区中创建不同的文档。感谢Mark对此进行清理。我怀疑是这样的,但我认为,对于其他可能感到疑惑的人来说,要求将其明确记录下来是很有用的。