mongodb的near查询,sort之后,limit(10)与limit(50)的前10条,居然不同...

发布网友

我来回答

5个回答

热心网友

这是你程序的逻辑问题,不是mongo bug:
假设limit(5).sort(feedid:-1) 找出的feedid为:5,4,3,2,1
假设limit(2).sort(feedid:-1) 找出的feedid为:6,2

结果当然不一样

热心网友

因为cursor不是马上执行的,是到你要数据的那一刹那才从数据库取数据的。
所以cursor知道你只要10个和50个。
所以你这个命令是在告诉mongodb选10个/50个离得最近的,然后再按feedid排序。追问我在执行两条语句前,数据库没有任何更新,那取出10条最近的,也应该包含在50条最近的里面啊?而我测试的时候发现,有的数据根本没在50条里。

追答那可能mongo是先按feedid排序再取10/50个最近的,你看看是不是这样的,他的doc应该没有详细写。

热心网友

因为cursor不是马上执行的,是到你要数据的那一刹那才从数据库取数据的。
所以cursor知道你只要10个和50个。
所以你这个命令是在告诉mongodb选10个/50个离得最近的,然后再按feedid排序。追问我在执行两条语句前,数据库没有任何更新,那取出10条最近的,也应该包含在50条最近的里面啊?而我测试的时候发现,有的数据根本没在50条里。

热心网友

Sort Operation
$near sorts documents by distance. If you also include a sort() for the query, sort() re-orders the matching documents, effectively overriding the sort operation already performed by $near. When usingsort() with geospatial queries, consider using $geoWithin operator, which does not sort documents, instead of $near.

官方文档其实有提到的.如果你需要自己设置排序,建议你使用:$geoWithin

热心网友

我也遇到了,排序后按照地理位置是正确的,sort后面的字段不正确,哥们你是怎么解决的啊

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com