我使用 $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 似乎不同。
有人可以解释一下这两个查询之间的区别吗?