使用 SDK 时,使用 ORDER BY 子句的查询不起作用
我的目标是在我请求后从 NoSQL Cosmos DB 获取排序后的项目。
这是我的 Rust 代码的一部分:
let mut query_builder = get_collection_client(collection_name)?
.query_documents(Query::new(
"SELECT * FROM dwellings c ORDER BY c.price".to_string())
)
.max_item_count(item_count);
但是查询结果:服务器返回错误状态,不会重试:400。 如果我在 Azure CosmosDB 数据资源管理器中准确运行此查询,查询将返回预期结果。
假设您使用的库是这样的:https://github.com/Azure/azure-sdk-for-rust/tree/main/sdk/data_cosmos
您的查询可能是跨分区查询。您收到的 HTTP 400 错误有正文和消息,它可能表示查询无法执行。
基于示例:https://github.com/Azure/azure-sdk-for-rust/blob/main/sdk/data_cosmos/examples/query_document.rs
您可以将
.query_cross_partition(true)
添加到 query_documents
操作中,但这对于使用 ORDER BY
的查询不起作用:https://learn.microsoft.com/rest/api/cosmos-db/querying-cosmosdb-resources -使用-the-rest-api#无法由网关提供服务的查询
简而言之,为了让 ORDER BY 跨分区查询发挥作用,客户端库需要做编排工作,而这个库似乎没有。
查询应具有分区键值的范围才能执行。