Igo*_*oks 3 json geolocation mongodb mongodb-query
我有这样的文档集合:
{
...
"CurrentLocation" : {
"type" : "Point",
"coordinates" : [
-92.48436693078111,
35.85223020932276
]
}
...
}
Run Code Online (Sandbox Code Playgroud)
我需要使用两个可能的中心点进行“$near”查询:
db.Truck.find({
"$or": [{
"DestinationLocation": {
"$near": {
"$geometry": {
"type": "Point",
"coordinates": [-117.256875, 41.856405]
},
"$maxDistance": 100000.0
}
}
}, {
"DestinationLocation": {
"$near": {
"$geometry": {
"type": "Point",
"coordinates": [-112.256875, 40.856405]
},
"$maxDistance": 100000.0
}
}
}]
})
Run Code Online (Sandbox Code Playgroud)
Mongo 返回一个错误:
error:
{
"$err" : "Can't canonicalize query: BadValue Too many geoNear expressions",
"code" : 17287
}
Run Code Online (Sandbox Code Playgroud)
除了应用程序端的数据联合之外,还有什么方法可以用两点请求 $near 吗?谢谢。
Mongo DB 只接受一个 NEAR。如果有一个 NEAR,它必须是根或者根必须是一个 AND 并且它的子节点必须是一个 NEAR。见https://github.com/mongodb/mongo/blob/master/src/mongo/db/query/canonical_query.cpp#L364
如果您需要$or使用两个操作$near,请尝试进行两个查询并整合它们的结果。