mongodb: можно найти по 2-му индексу расстояние возврата?

Я вижу из документа mongodb, что db.runCommand с расстоянием возврата geoNear также.

Я использую мангуст в node.js и хочу знать, можно ли добиться того же с помощью Model.find ({'loc': {$ near: [lng, lat], $ maxDistance: 5 / 111.12}, .....)

runCommand с geoNear не работает, если у вас более одного 2d-индекса. У меня в коллекции 2 2d индекса. Один определен в схеме, а другой является частью DbRef.

Также мне не очень нравится точный синтаксис, который будет использоваться для команды run с mongoose.


person user644745    schedule 27.06.2012    source источник


Ответы (1)


geoNear, доступный во встроенной базе MongoDB. драйвер и, следовательно, расширение в mongoose, будет искать все географические индексы в документе и может возвращать его несколько раз, вы можете передать параметр uniqueDocs, чтобы убедиться, что у вас нет повторяющихся записей.

collection.geoNear(50, 50, {uniqueDocs:true}, function(err, docs) {
});

Альтернативой является выполнение запроса ближнего в определенном поле, но вам, возможно, придется выполнить некоторое преобразование значения расстояния, чтобы получить правильный диапазон. Я не припоминаю, что бы это было. Лучшее место для экспериментов - это mongoshell, а затем просто преобразовать его в команду для node.js.

person christkv    schedule 27.06.2012
comment
Я опубликовал более подробный ответ об использовании встроенного драйвера geoNear здесь: stackoverflow.com/a/11825138/856403. Но чтобы ответить на исходный вопрос: в настоящее время невозможно получить расстояние при использовании find. - person Timm; 06.08.2012