我使用 $geoNear 作为聚合框架的第一步。我需要根据“标签”字段过滤掉结果,它工作正常,但我看到有两种方法都给出不同的结果。
示例 MongoDB 文档
{ “位置”: [ 40.80143, -73.96095 ], “标签”:“披萨” }
我已将 2dsphere 索引添加到“位置”键
db.restaurants.createIndex( { 'position' : "2dsphere" } )
查询 1
db.restaurants.aggregate( [ { "$geoNear":{ “近”:{类型:“点”,坐标:[55.8284,-4.207]}, “限制”:100, “最大距离”:10*1000, "distanceField": "dist.calculated", "includeLocs": "dist.location", “距离乘数”:1/1000, “球形”:真 } },{ "$match":{"tag":"pizza"} }, { "$group":{"_id":null,"totalDocs":{"$sum":1}} } ] );
查询 2
db.restaurants.aggregate( [ { "$geoNear":{ “查询”:{“标签”:“披萨”} “近”:{类型:“点”,坐标:[55.8284,-4.207]}, “限制”:100, “最大距离”:10*1000, "distanceField": "dist.calculated", "includeLocs": "dist.location", “距离乘数”:1/1000, “球形”:真 } }, { "$group":{"_id":null,"totalDocs":{"$sum":1}} } ] );
分组选项只是获取两个查询返回的文档数。
两个查询返回的 totalDocs 似乎不同。
有人可以解释一下这两个查询之间的区别吗?