Запрос Mongo GeoLocation приводит к ошибке

Я некоторое время использовал запрос ниже, и он работал, как и ожидалось. Сегодня я удалил все документы в коллекции users из терминала и получил Mongo Error.

Запрос:

neighbors query: {
  "geoInfo.location": {
    "$near": {
      "$maxDistance": 160000,
      "$geometry": {
        "type": "Point",
        "coordinates": [
          101.69558548629793,
          3.046124475906546
        ]
      }
    }
  },
  "gender": "female",
  "_id": {
    "$nin": [
      "6f6ca0ecdfc96c74cc90624ce8e915cb"
    ]
  }
}

Ошибки:

[MongoError: point not in interval of [ -180, 180 ] :: caused by :: { 0: 160000.0, 1: 0.0 }] name: 'MongoError'

Вышеупомянутый запрос дает -

error: {
    "$err" : "point not in interval of [ -180, 180 ] :: caused by :: { 0: 160000.0, 1: 0.0 }",
    "code" : 16433
}

на консоли монго.

Спасибо!


person Community    schedule 06.02.2014    source источник
comment
Вы смогли решить эту проблему? Судя по сообщению об ошибке, в вашей базе данных может быть точка geoInfo.location с долготой 160000? Вы упомянули об удалении всех документов из коллекции users, но похоже, что запрос направлен против neighbors; действительно ли коллекция neighbors должна быть пустой?   -  person Stennie    schedule 18.03.2014


Ответы (1)


Насколько я понимаю, расстояние, которое вы до сих пор указывали в метрах, теперь воспринимается в радианах.

Документация по $near невелика. Не забудьте взглянуть на индексы этого коллекция?

Некоторые люди используют простое исправление деления расстояния в км на 111,12 (один градус равен примерно 111,12 км)

person Jinxcat    schedule 06.02.2014