gpt4 book ai didi

azure - 如何定义涉及 Azure Cosmos DB 中嵌入数组中的属性的唯一键?

转载 作者:行者123 更新时间:2023-12-04 10:11:35 24 4
gpt4 key购买 nike

在 Azure Cosmos DB 中,支持唯一键。每个唯一键被定义为一组表示存储文档中的值的路径。此类路径的示例为 /contact/firstName。从官方文档中并不清楚(事实上根本没有提到)这些路径如何通过文档中的嵌入数组向下应用,或者当路径导航到基数大于一的嵌套文档时如何应用独特的关键语义。

例如,假设我有一个这样的文档来存储一个用户组和一组成员用户:

{
"id": "ABCD1234",
"name": "Administrators",
"members":
[
{
"userId": 1,
"enabled": true
},
{
"userId": 2,
"enabled": true
}
]
}

我希望组名称在整个逻辑分区中是唯一的,因此我添加了一个带有路径 /groupName 的唯一键。

我还想确保成员是唯一的,即相同的 userId 值在给定组中不会出现多次。天真地,我可能会尝试使用路径 /name/members/userId 创建一个唯一的 key 。但这不起作用,唯一 key 似乎没有任何作用。

我尝试了几种不同的变体,但没有一个达到我预期的效果。

所以我的问题:

  1. 是否可以创建“遍历”嵌入对象数组的唯一键?
  2. 如果是这样,正确的路径语法是什么?
  3. 鉴于唯一键意味着“在整个逻辑分区中唯一”而不是“在整个文档中唯一”,如果我实际上确实设法定义涉及属性的唯一键,会发生什么嵌入的 members 对象,并尝试保存两个成员均为零的不同组?那么,对于这两个组,这些键不会在逻辑上被评估为 nullundefined ,从而阻止我保存其中一个吗?

感谢您提供任何见解来帮助解决这个问题!

最佳答案

唯一键不会遍历到文档中的数组,这就是为什么它们没有这样记录的原因。

有关什么是逻辑分区的详细信息,请参阅我们的文档 partitions

如果您想要像您所描述的那样具有唯一性,请在逻辑分区中创建不同的文档。

关于azure - 如何定义涉及 Azure Cosmos DB 中嵌入数组中的属性的唯一键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61312837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com