gpt4 book ai didi

azure - 如何使用数组中的字段作为过滤器从 Cosmos DB 获取文档?

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

我有一个 Cosmos DB,其文档如下所示:

{
"name": {
"productName": "someProductName"
},
"identifiers": [
{
"identifierCode": "1234",
"identifierLabel": "someLabel1"
},
{
"identifierCode": "432",
"identifierLabel": "someLabel2"
}
]
}

我想编写一个sql查询来获取整个文档,在搜索文档时使用“identifierLabel”作为过滤器。

我尝试根据从以下 blog 中找到的示例编写查询:

SELECT c,t AS identifiers
FROM c
JOIN t in c.identifiers
WHERE t.identifierLabel = "someLabel2"

但是,当返回结果时,它将以下内容附加到文档末尾:

{
"name": {
"productName": "someProductName"
},
"identifiers": [
{
"identifierCode": "1234",
"identifierLabel": "someLabel1"
},
{
"identifierCode": "432",
"identifierLabel": "someLabel2"
}
]
},
{
"identifierCode": "432",
"identifierLabel": "someLabel2"
}

如何避免这种情况并获得我想要的结果,即没有附加任何内容的整个文档?

提前致谢。

最佳答案

使用 ARRAY_CONTAINS(),您应该能够执行类似的操作来检索整个文档,而无需自连接:

SELECT *
FROM c
where ARRAY_CONTAINS(c.identifiers, {"identifierLabel":"someLabel2"}, true)

请注意,ARRAY_CONTAINS() 可以搜索标量值或对象。通过指定 true 作为第三个参数,表示搜索对象。因此,在上面的查询中,它正在搜索数组中 identifierLabel 设置为 "someLabel2" 的所有对象(然后它应该返回原始文档,保持不变,避免您在自加入时遇到的问题)。

关于azure - 如何使用数组中的字段作为过滤器从 Cosmos DB 获取文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73837899/

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