gpt4 book ai didi

c# - 在 CosmosDB 文档的字典中查询项目

转载 作者:行者123 更新时间:2023-12-04 17:44:58 26 4
gpt4 key购买 nike

我的 CosmosDB 数据库中有这样的文档:

{
"id": "12345",
"filename": "foo.txt",
"versions": {
"1": {
"storageAccount": "blob123",
"size": 33
},
"2": {
"storageAccount": "blob123",
"size": 42
}
}
}

(这是一个简化的示例)

我需要查询 "storageAccount" 属性,以检查是否有文件存储在给定的存储帐户中。但是我找不到一种方式来表达“对于每个版本”。

我试过了,当然不行

select top 1 *
from c
join v in c.versions
where v.storageAccount = 'blob123'

显然 JOIN 只适用于数组,不适用于字典。有没有办法查询字典中的项目?

作为一种解决方法,我可以使用 UDF,但性能和成本都非常糟糕(当没有匹配的文档时,仅 2000 个文档需要 1200 个 RU...)

编辑:已更新以更准确地反射(reflect)实际用例

最佳答案

不幸的是,这在今天是不可能的。您不能在 Cosmos 的 SQL 中迭代对象键。

我建议将架构更改为:

{
"id": "12345",
"filename": "foo.txt",
"versions": [
{
"id": "1"
"storageAccount": "blob123",
"size": 33
},
{
"id": "2"
"storageAccount": "blob123",
"size": 42
}
]
}

此外,您可以评估一个用户定义的函数,它会为您返回一个对象的键,但这会增加您的 RU 成本,尽管可能低于存储过程。

关于c# - 在 CosmosDB 文档的字典中查询项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52495756/

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