发布网友
共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后面的字段不正确,哥们你是怎么解决的啊