我正在编写一个聚合查询,尝试匹配特定区域的用户。我遵循了3.6版本文档(我的mongodb
版本)
db.collection('users').aggregate([
{$match: {
location: {
$geoNear: {
near: {type: 'Point', coordinates: [lng, lat]},
maxDistance: globalConf.maxDistance * 1000
}
}
}})
如果我在find
上下文中使用此匹配项,它将起作用。如何修改查询以使其在聚合上下文中工作?
我得到的错误是$geoNear, $near, and $nearSphere are not allowed in this context
答案 0 :(得分:0)
$geoNear
必须处于聚合管道阶段。而且我必须包含{spherical: true}
,因为我的location
字段是2dsphere
类型
因此,结果将是
db.collection('users').aggregate([
$geoNear: {
includeLocs: "location",
distanceField: "distance",
near: {type: 'Point', coordinates: [lng, lat]},
maxDistance: globalConf.maxDistance * 1000,
spherical: true
}
])