我有一个简单的 MongoDo 聚合查询:
{
"$geoNear": {
"near": {
"type": "Point",
"coordinates": [
-73.982,
40.7685
]
},
"spherical": "true",
"distanceField": "d",
"limit": 100000,
"maxDistance": 8046.7,
"query": {
"ipv": 1
}
}
},
{
"$sort": {
"created_at": -1
}
},
{
"$limit": 5
}
我的简单问题是查询操作顺序。查询是否扫描所有文档以查找匹配的坐标,然后从该数据集中匹配 ipv: 1,然后按 created_at 排序,然后限制 5?
如果是这样 - 这不会发生。我必须放置一个“限制”字段,否则它只会扫描最后 100 条记录,匹配地理坐标,然后执行操作顺序。
有没有办法让 MongoDB 扫描所有记录以查找匹配的 GPS 坐标,然后执行匹配?