将$ geoNear与$ match结合使用,同时确保返回的文档数量(mongodb)

时间:2017-05-26 08:40:47

标签: javascript mongodb mongoose mongodb-query aggregation-framework

我想获取20个文件within certain distance AND active: true AND have distances returned。但问题是:

1)如果使用mongodb查询,合并$nearSphereactive: truelimit(20),它将正确查询文档,直到达到20个文档。但是,它不会返回距离

2)如果使用mongodb聚合如下,它将返回距离,但 $match阶段可以杀死一些没有active: true的文档。因此,无法确保返回的文档数量。

var operation = [
   { "$geoNear": { "distanceField": "distance", "limit": 20 }},
   { "$match": { status: 'accepted' } }
}];

model.aggregate(operation, function (err, docs){
    // each doc has `distance`, but 2nd operation could 
    // remove some document, thus the number of docs returned
    // cannot be ensured
});

如何确保返回一定数量的文件? (与第一种方法一样),并且具有mongodb计算的距离(如第二种方法)?

0 个答案:

没有答案