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

Json mongo 2.6.4中的多个$near不起作用,json,mongodb,geolocation,mongodb-query,Json,Mongodb,Geolocation,Mongodb Query,我收集了如下文件: { ... "CurrentLocation" : { "type" : "Point", "coordinates" : [ -92.48436693078111, 35.85223020932276 ] } ... } 我需要用两个可能的中心点进行“$near”查询: db.Truck.find({ "$or": [{ "DestinationLocation": {

我收集了如下文件:

{
  ...
  "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,它必须是根或根 必须是一个和它的孩子必须是一个近。看


如果您需要在
$or
操作中使用两个
$near
,请尝试进行两次查询并将查询结果进行集成。

使用$or的示例

db.Truck.find({
    "DestinationLocation": {
        "$or":[{
          "$near": {
              "$geometry": {
                  "type": "Point",
                  "coordinates": [-117.256875, 41.856405]
              },
              "$maxDistance": 100000.0
            }
        },{
        "$near": {
            "$geometry": {
                "type": "Point",
                "coordinates": [-112.256875, 40.856405]
            },
            "$maxDistance": 100000.0
          }
        }]

    }

})

你能为你的建议提供一个例子吗?@anhlc你确定我必须写多个查询吗?没有其他解决方案吗?@KasirBarati,是的,在最新的mongodb版本中,这仍然是一个限制:Hi@gsa,你是如何编写这样一个查询的。它将抛出一个错误。我试着做同样的事情,但我得到的错误和问题中解释的一样(你的问题现在是我的问题。我读了答案,但我想知道是否还有其他更简单、更有效的方法来获得同样的结果。