【发布时间】:2020-01-15 22:21:13
【问题描述】:
我有一个相当大的 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 没有的文档。
【问题讨论】:
-
您是否正在使用继续令牌 (x-ms-continuation) 响应标头? docs.microsoft.com/rest/api/cosmos-db/…
-
@MatiasQuaranta 似乎是这样。我在阅读
{{token":null, ...}}的意思是没有延续,但实际上只有省略 x-ms-continuation 标头意味着这一点。如果您想将其写为答案,我会将其设置为正确/可能添加一些内容
标签: azure azure-cosmosdb azure-cosmosdb-sqlapi