这是我想执行的查询:
db.cells.find(
{
loc: {
$near: {
$geometry: {
type : "Point",
coordinates : [ 31.0, 31.0 ]
},
$minDistance: 0,
$maxDistance: this.range
}
}
}
)
问题出在this.range
。我想使用cells
的range
字段来设置最大距离。这个参数可以变化,或者maxDistance
必须是我尝试匹配的每个文档的固定值?
解决问题的方法之一是在聚合管道中使用$geoNear
计算距离字段。然后,使用计算距离字段与您想要的最大距离进行比较。这一点。
db.cells.aggregate([
{
"$geoNear": {
"near": {
"type": "Point",
"coordinates": [
31.0,
31.0
]
},
"distanceField": "dist"
}
},
{
$match: {
$expr: {
lte: [
"$dist",
"$range"
]
}
}
}
])
Mongo操场