我想获取20个文件within certain distance
AND active: true
AND have distances returned
。但问题是:
1)如果使用mongodb查询,合并$nearSphere
,active: true
和limit(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计算的距离(如第二种方法)?