繁体   English   中英

Azure CosmosDB REST API 忽略数据资源管理器返回的结果

[英]Azure CosmosDB REST API omits results that data explorer returns

我有一个相当大的 Cosmos db 集合(大约 150 万条记录)。 如果我在数据资源管理器中的索引字段上运行查询,例如:

SELECT * FROM c WHERE ARRAY_CONTAINS(c.InnerArray, { "MyValue": 1234 }, true)

我收到了预期的结果。

如果我通过 REST API 执行相同的查询,我会收到:

{
    "_rid": "...",
    "Documents": [],
    "_count": 0
}

这种差异各不相同。 对于某些文档,我在门户数据浏览器中收到它,而对于其他文档,我只在数据浏览器中收到了 REST API。

我缩小了一个差异,但我不确定“修复”是什么(假设这是问题所在)。

如果我从门户导出“每分区查询指标 (CSV)” ,我可以看到通过 REST api 返回的文档在“分区键范围 ID”0 内找到。那些没有出现在 REST api 上的文档(但是确实出现在门户中)位于“分区键范围 ID”1 中。

是否需要通过 REST api 设置一些额外的配置或标头? 我设置了请求标头,包括x-ms-documentdb-query-enablecrosspartition并在响应中接收空的继续令牌。

附加说明:C# SDK(网关和直接)连接模式将返回 REST API 没有的文档。

使用 REST API 执行查询时,请确保您正在使用和验证x-ms-continuation标头。 参考: https : //docs.microsoft.com/rest/api/cosmos-db/common-cosmosdb-rest-response-headers

您可以迭代(发送更多请求),直到响应中没有返回 Continuation Token。

SDK 将具有这种行为,这就是您看到这种差异的原因。 它类似于在HasMoreResults迭代检查HasMoreResultsContinuationToken属性的FeedResponse

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM