2016-01-25 3 views
0

Я запрашиваю коллекцию MongoDB из приложения, созданного с помощью Express + Mongoose. Я ищу документы на определенном расстоянии от географической точки. Результаты показывают документы за пределами максимального расстояния, которое я указываю.Как правильно указать максимальное расстояние в запросе geoNear в Mongoose?

Эта модель для коллекции я: поиск информации

LocationSchema = new mongoose.Schema({ 
    id: { 
     type: String, 
     unique: true 
    }, 
    ref: String, 
    name: String, 
    loc: { 
     type: [Number], // [<longitude>, <latitude>] 
     index: '2d'  // create the geospatial index 
    } 
}); 

Это код, который запрашивает БД (через Мангуст):

var queryOptions = { 
    maxDistance: 30, 
    // maxDistance : 30/6371, // <-- (this doesn't work) 
    distanceMultiplier: 6371, // tell mongo how many radians go into one kilometer. 
    spherical: true, 
    limit: 60 
}; 

location.geoNear([latitude, longitude], queryOptions, processResults); 

В этом скриншоте, Coords я указал в запросе находятся центр Дублина. Результаты, как вы можете видеть, намного дальше, чем указанное максимальное расстояние 30 км.

Где я пошла не так?

enter image description here

ответ

0

Проблема была в этой строке кода:

location.geoNear([latitude, longitude], queryOptions, processResults); 

Это должно быть долготу первой, то широта! Изменение его на это позволило решить проблему:

location.geoNear([longitude, latitude], queryOptions, processResults); 

Простой.

Смежные вопросы