gpt4 book ai didi

azure - 查询以获取另一个引用的所有 Cosmos DB 文档

转载 作者:行者123 更新时间:2023-12-03 00:45:57 25 4
gpt4 key购买 nike

假设我有以下 Cosmos DB 容器,其中包含可能的文档类型分区:

{
"id": <string>,
"partitionKey": <string>, // Always "item"
"name": <string>
}
{
"id": <string>,
"partitionKey": <string>, // Always "group"
"items": <array[string]> // Always an array of ids for items in the "item" partition
}

我有一个“组”文档的 ID,但我没有该文档本身。我想做的是执行一个查询,为我提供“组”文档引用的所有“项目”文档。

我知道我可以执行两个查询:1)检索“group”文档,2)在“item”分区上使用 IN 子句执行查询。

由于除了获取 id 列表之外,我不关心“组”文档,因此是否可以构造一个查询来仅使用“组”文档 id 获取我想要的所有“项目”文档?

最佳答案

您需要执行两个查询,因为单独的文档之间没有连接。尽管支持子查询,但当前仅支持相关子查询(这意味着内部子查询引用外部查询中的值)。您需要的是不相关的子查询。

请注意,即使您不需要所有group 文档,也不需要检索整个文档。您可以仅投影 items 属性,然后可以在第二个查询中使用诸如 array_contains() 之类的内容。像这样的东西:

SELECT VALUE g.items
FROM g
WHERE g.id="1"
AND g.partitionKey="group"

SELECT VALUE i.name
FROM i
WHERE array_contains(<items-from-prior-query>,i.id)
AND i.partitionKey="item"

这个documentation page阐明了两种子查询类型并仅支持相关子查询。

关于azure - 查询以获取另一个引用的所有 Cosmos DB 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65744238/

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