我想知道我是否可能达到导致这种情况的某种限制。我运行了一个查询,证明在通过三个字段PLUS唯一ID进行过滤时,Cosmos DB文档集合中存在记录,但是当我删除唯一ID时,我得到124个结果,其中没有一个是原始记录。
如果我在Azure门户中运行以下实时查询,我会得到一个结果,这是我期望的项目:
-- 1 result, item 'ABCD-EFGH-IJKL-MNOP' present and correct
SELECT
*
FROM a
WHERE a.width = 205
AND a.height = 55
AND a.depth = 16
AND a.uniqueId = 'ABCD-EFGH-IJKL-MNOP'
当我删除最后一行时,我得到 124 结果,但不是具有唯一ID的项目' ABCD-EFGH-IJKL-MNOP'。
-- 124 results, item 'ABCD-EFGH-IJKL-MNOP' missing
SELECT
*
FROM a
WHERE a.width = 205
AND a.height = 55
AND a.depth = 16
每条记录实际上都很大,因为该文档包含大量信息。如果我再次将查询更改为:
-- 150 results, item 'ABCD-EFGH-IJKL-MNOP' present and correct
SELECT
a.width,
a.height,
a.depth,
a.uniqueId
FROM a
WHERE a.width = 205
AND a.height = 55
AND a.depth = 16
我得到 150 结果,结果神奇地弹回到结果中......
结果被遗漏会有一些限制吗?
附加说明:
答案 0 :(得分:3)
即使您运行查询“无限制”(FeedOptions.MaxItemCount
设置为-1
),仍然可以根据返回的数据量对结果进行分页。
您可以检测到这一点,因为标记Has More Results
返回true
:
if (queryable.HasMoreResults)
{
//... there are more results
}
运行无限制查询时,您可能不会期望这样。
如果您使用的是REST API,则会有一个标题:
x-ms-continuation=randomlookingstring
您可以在后续请求中传回此标头,然后重新开始查询。
我目前正在寻找有关限制的文档,并会在找到时更新。