我收集了这样的文档:
{
...
"CurrentLocation" : {
"type" : "Point",
"coordinates" : [
-92.48436693078111,
35.85223020932276
]
}
...
}
我需要使用两个可能的中心点进行“$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
}
}
}]
})
Mongo 返回一个错误:
error:
{
"$err" : "Can't canonicalize query: BadValue Too many geoNear expressions",
"code" : 17287
}
除了应用端的data union,有没有办法用两点请求$near? 谢谢。
最佳答案
Mongo DB 只接受一个 NEAR。如果有一个NEAR,它必须是根或根 必须是一个 AND 并且它的 child 必须是一个 NEAR。参见 https://github.com/mongodb/mongo/blob/master/src/mongo/db/query/canonical_query.cpp#L364
如果您需要使用两个 $near
进行 $or
操作,请尝试进行两个查询并整合它们的结果。
关于json - mongo 2.6.4 中的多个 $near 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26329906/