Azure、DocumentDB、Count 给出不正确的结果

Azure, DocumentDB, Count give incorrect results

在 documentDB 集合上,在门户中我 运行 下一个查询:

SELECT * FROM c WHERE NOT IS_DEFINED(c.UserDataType)

一些结果 returned.

现在运行正在查询:

SELECT count(1) FROM c WHERE NOT IS_DEFINED(c.UserDataType)

return 结果:

[ { "": 0 } ]

怎么可能?

可能有帮助的一件事是,当查询在门户中 运行ning 时,会发生一些继续

DocumentDB 在两个方面不同于传统数据库 - 1) 由于它是基于 HTTPS 和 REST 的基于云的服务,因此它对所有请求的延迟上限为 5 秒,以及 2) 它是具有预配置吞吐量的数据库,因此您可以获得可预测的性能(这很好),但必须在保留的资源预算内执行查询。

这意味着某些查询可以取得增量进展,您必须通过使用继续标记重新提交查询来恢复执行,直到所有结果可用。对于聚合查询,DocumentDB 的工作方式类似于 "map-reduce",将部分聚合结果返回给客户端,客户端负责生成最终结果(例如对聚合求和)。通常,您不会注意到此行为,因为查询在一次往返中完成,但您会注意到查询何时需要扫描才能执行(就像在这个原因中,因为它涉及对 NOT IS_DEFINED 子句的否定)。

如果您 运行 查询完成,您将看到返回的正确结果。