[英]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
迭代检查HasMoreResults
或ContinuationToken
属性的FeedResponse
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.