Aks*_*hta 7 geospatial mongodb 2dsphere
我使用 $geoNear 作为聚合框架的第一步。我需要根据“标签”字段过滤掉结果,它工作正常,但我看到有两种方法可以给出不同的结果。
示例 MongoDB 文档
{
“位置”: [
40.80143,
-73.96095
],
“标签”:“披萨”
}
我已将 2dsphere 索引添加到“位置”键
db.restaurants.createIndex( { '位置' : "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 似乎不同。
有人可以向我解释这两个查询之间的区别吗?
几个假设:-
1. 假设有 300 条记录匹配基于位置。
2. 假设第一组 100 个结果没有标签披萨。其余 200 个文档(101 到 300)有标签披萨
查询 1:-
查询 2:-
PS : - 添加 $group 管道阶段只是为了获取计数,因此没有在解释中写到它
| 归档时间: |
|
| 查看次数: |
9879 次 |
| 最近记录: |