gpt4 book ai didi

azure - CosmosDB 分区键/唯一键混淆

转载 作者:行者123 更新时间:2023-12-03 07:06:19 25 4
gpt4 key购买 nike

我在 Azure 中创建了名为 DB1 的 CosmosDB。

阅读 1

  1. 使用/category 作为分区键且没有唯一键创建了 container1。

  2. 添加了这些记录:# 在第二条记录中,我没有提供 ID,而是为我创建了一个 ID。

 {
"id": "1",
"category": "Personal",
"name": "Record1"
}

{
"name": "Record3",
"category": "Personal",
}
  • 数据输入成功 -
  • 阅读 2

    1. 使用/id 作为分区键和/category 作为唯一创建了容器2

    2. 尝试添加这 3 条记录。

    {
    "id": "1",
    "category": "Personal",
    "name": "Record1"
    }

    {
    "category": "Business",
    "name": "Record2",
    "priority": "high"
    }

    {
    "id": "1",
    "name": "Record3"
    }
  • 无法插入记录 3(id=1,name=record3),因为我猜 id=1 已被占用?
  • 阅读 3

    1. 使用/id 作为分区键且没有 uniq 键创建了容器2

    2. 添加了这些记录

    {
    "id": "1",
    "category": "Personal",
    "name": "Record1"
    }

    {
    "category": "Business",
    "name": "Record2"
    }

    {
    "id": "1",
    "name": "Record3"
    }
  • 无法插入第三条记录,因为 id=1 已存在于 record1 中。
  • 现在

    我的问题是这样的。

    在reading1中,分区键是/category,但它允许我插入两条具有相同类别的记录,但在reading3中,当/id作为分区键时,它不允许我添加两条具有相同id的记录。

    为什么?一直在试图弄清楚这一点。有人吗?

    最佳答案

    在回答您的具体问题之前,我想提一下几件事:

    • 文档在逻辑分区中必须是唯一的,即 id 字段和分区键值的组合在容器中必须是唯一的。
    • 如果您没有为 id 字段分配值,SDK 可以为该字段分配值。

    现在回答你的问题:

    • 在第一个场景中,由于分区键值不同,您可以创建 2 个文档。如果您查询第二个文档,您实际上应该看到分配给您的文档的 ID。
    • 在第三种情况中,由于 id 属性是分区键,因此插入失败,因为记录 1 和 3 具有相同的分区键/id 值组合。

    关于azure - CosmosDB 分区键/唯一键混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71359303/

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