我有以下文件结构的集合:
{
"_id": "64f10520de562a0007595b56",
"location": {
"type": "Point",
"radius": 62.474601140938596,
"coordinates": [
-100.28823650799032,
25.68087292245721
]
}
}
所以我想在查询中使用“radius”属性值,像这样:
db.collection.find({
location: {
$geoWithin: {
$centerSphere: [
[
-103.83176,
20.88196
],
10 / "RADIUS_PROPERTY_VALUE" // -> 62.474601140938596
]
}
}
})
有没有办法做到这一点?
MONGODB PLAYGROUND SCENARIO
1条答案
按热度按时间u7up0aaq1#
mongoplayground上的例子不起作用,因为
$geoWithin
查询操作符没有将$location.raidus
解释为文档的值,而是将其解释为字符串$location.raidus
。这就是为什么它一直说query failed: (BadValue) radius must be a non-negative number
(不是因为它是负数,而是因为它是一个字符串,所以根本不是一个数字)。也就是说,你应该尝试使用
$geoNear
聚合运算符:https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/它在mongoplayground上不起作用,因为它需要一个2d球体索引,但可能对你的项目起作用。