gpt4 book ai didi

azure - 在 Cosmos Db 中按类型过滤文档

转载 作者:行者123 更新时间:2023-12-03 05:51:31 26 4
gpt4 key购买 nike

我正在尝试按特定类型获取文档。这是我基于文档的第一次尝试:

var dataStoreStatuses = 
_documentClient.CreateDocumentQuery<DataStoreStatus>(
DocumentService.CollectionUri, new FeedOptions() {
EnableCrossPartitionQuery = true })
.ToList();

问题是此请求甚至返回不符合 DataStoreStatus 架构的文档。我想这就是它应该如何工作,因为 Cosmos Db 是无模式的(尽管文档说 DataStoreStatus 定义了要查询的对象的类型)。

我曾经使用RavenDb,它存储文档的类型,因此这种查询非常容易执行。有没有办法在 Cosmos Db 中实现这一目标?

最佳答案

正如您已经提到的,DocumentDB 是无模式的。当文档说“DataStoreStatus 定义了要查询的对象的类型”时,我相信您正在查看的是客户端 API 的文档。特定的泛型类型参数实际上并不是发送到 DocumentDB 存储的查询的一部分,而是用作获取文档后的第二步,以帮助自动将返回的文档映射到您想要的类型。后一步纯粹是客户端的。

因此,据我所知,按照设计,您无法通过查询按类型查询文档。

解决方法

如果您需要按类型查询文档,那么您需要将此类信息存储到文档本身。有一个名为“type”之类的属性是很常见的。然后你可以进行查询:

select * from c where c.type = 'DataStoreStatus'

请注意,您的实体类型还应该包含该字段。

关于azure - 在 Cosmos Db 中按类型过滤文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47446827/

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