Rust Azure SDK(v.0.19.0)中的 ORDER BY 不起作用

问题描述 投票:0回答:1

使用 SDK 时,使用 ORDER BY 子句的查询不起作用

  • Azure_sdk版本:0.19.0
  • Azure_core 版本:0.19.0
  • Rust 版本:1.71
  • MacOS:14.1

我的目标是在我请求后从 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 数据资源管理器中准确运行此查询,查询将返回预期结果。

rust azure-cosmosdb azure-sdk
1个回答
0
投票

假设您使用的库是这样的: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 跨分区查询发挥作用,客户端库需要做编排工作,而这个库似乎没有。

查询应具有分区键值的范围才能执行。

© www.soinside.com 2019 - 2024. All rights reserved.