json - mongo 2.6.4 中的多个 $near 不起作用

标签 json mongodb geolocation mongodb-query

我收集了这样的文档:

{
  ...
  "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/

相关文章:

php - 位置感知移动应用程序,需要有关我应该使用哪些技术的建议

javascript - 在 Express 应用程序初始化期间加载 JSON 文件

json - 用于深度嵌套 JSON 的 Cloudant/Mango 选择器

node.js - 使用 node.js 将文件流式传输到 mongodb

node.js - mongodb的if条件查询

google-maps - 打开谷歌地图的替代品?

android - 如何在 Android Emulator 中模拟 GPS 位置?

android - 执行 JSON 请求时出现内部错误

json - 如何验证 JSON 并显示任何错误的位置?

mongodb - Elixir Bson 解码器在 utf8 > 16#FF 上失败