Mongodb $接近二级排序

时间:2015-03-24 19:59:06

标签: mongodb sorting geo

在mongodb中使用$ near,按距离返回结果。当距离匹配时,有没有办法知道排序顺序(或指定它)?

例如,如果我请求10个文档并且它们距离相同,然后请求另外10个文档,并且它们与第一个文档的距离也相同,我可以对哪个字段进行排序以确保排序顺序为总是一样吗?

1 个答案:

答案 0 :(得分:4)

$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排序。