Mongodb $near 二级排序顺序

Mongodb $near secondary sort order

将 $near 与 mongodb 结合使用,returns 按距离计算结果。当距离匹配时,有没有办法知道排序顺序(或指定排序顺序)?

比如我请求了10个文档,它们的距离都一样,然后再请求10个文档,它们也和第一组的距离一样,我可以在哪个字段上排序来保证排序顺序总是一样的?

$near$geoNear 按距离排序,对于距输入点相同距离的事物,未定义顺序。您可以使用带有 $geoNear 的聚合来根据距离 + 另一个字段进行排序以确保一致的顺序:

db.test.aggregate([
    { "$geoNear" : {
        "near" : { "type" : "Point", "coordinates" : [-73, 40] },
        "distanceField" : "dist",
        "maxDistance" : 2,
        "spherical" : true
    } },
    { "$sort" : { "dist" : 1, "_id" : 1 } }
])

$sort 阶段将无法使用索引,但希望性能不会太差,因为结果已经按 dist.

排序