MongoDB在地理空间查询中的计数不准确

3
我正在查询接近某个位置($near$maxDistance),并在日期范围内(使用$or和3组与日期/时间表相关的$gt/$lt条件)的文档。

我发现,无论limit()是什么,$cursor->count()总是返回100,即使有100个或更多结果。

似乎$cursor->skip()->limit()可以正常工作,允许我跳过超过100个结果(当有超过100个结果时),但是count()始终返回100,并且似乎没有办法确定完整计数(除了一直翻页,直到没有更多结果)。

我发现有关地理空间条件下map reduce不正确工作的参考,而mongodb文档则提到默认的limit()为100。

以上查询查找最靠近(50,50)的点,并按距离排序(不需要额外的排序参数)。 使用limit()指定要返回的最大点数(如果未指定,则应用默认限制为100):

这是一个已知问题吗? 我正在使用PHP驱动程序。


如果使用'$within'会发生什么?对于这种类型的查询,计算在某个限制范围内的条目数量似乎比'$near'更合适。因为$near总是期望您传递要返回的结果数量。 - Tom Gruner
想一想:Mongo 如何知道你需要多靠近的数据?你必须指定一个限制条件或使用 within,因为“near”实际上意味着“最近的”。如果我告诉你给我所有离我家最近的麦当劳,你可能会问那么什么距离算是“最近”,或者你要多少个最近的餐厅?count() 如果没有任何条件限制,从技术上讲会返回数据库中的所有内容,因为“near”没有明确的标准。Mongo说,如果你没有限制条件,它们会返回最近的100个记录。 - Michael Papile
@Tom 我得试试 $within。@Michael 我正在使用 $maxDistance,但可能没有考虑到(在问题中更新)。 - Tim Lytle
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接