В настоящее время я пытаюсь найти всех пользователей, которые живут в любом из списка местоположений (этот список местоположений может быть большим, поэтому выполнение нескольких запросов, чем объединение на сервере, сторона, не обязательно идеальна).Mongo - запрос сразу нескольких местоположений
В случае использования, например, было бы найти всех пользователей, которые живут в пределах 2 миль от любой церкви в моем нынешнем городе, с учетом списка координат для этих церквей.
Прямо сейчас, это следующий запрос место работы:
db.users.count({ location: { $within: { $centerSphere: [ [-84.330984, 33.8615], 2/3959 ] } } })
, а также:
db.users.count({location : { $near : [ -84.330984 , 33.8615 ] , $maxDistance : 2/69 } })
Однако, я хотел бы иметь возможность подсчитать количество пользователей, которые живут в диапазон различных местоположений. то есть что-то вроде:
db.users.count({ $or: [{ location: { $within: { $centerSphere: [ [-84.330984, 33.8615], 2/3959 ] } } },{ location: { $within: { $centerSphere: [ [-85.331122, 34.97832], 2/3959 ] } } } ] })
Прямо сейчас, когда я запускаю этот запрос, Монго дает документированную ошибку:
Tue Mar 26 17:24:22 uncaught exception: count failed: {
"errmsg" : "exception: $or may not contain 'special' query",
"code" : 13291,
"ok" : 0
}
Из этой ошибки и открытый JIRA билет (https://jira.mongodb.org/browse/SERVER-3984), Монго в настоящее время ограничено из будучи в состоянии выполнить несколько запросов местоположения с помощью оператора $ или (или $ all), поэтому я не могу привязать запросы местоположения.
Есть ли передовая практика или обход для этого? Опять же, я бы предпочел не иметь отдельный запрос для каждого местоположения, чем объединить их; хотя я понимаю, что это единственный вариант.
В настоящее время я использую Mongo 2.2.3, но у меня нет проблем с обновлением до 2.4, если он разрешит эту дилемму.
Благодаря
Как Рэй сказал, что это еще не реализовано, и поэтому вам нужно использовать карту Уменьшить функцию (которая работает на сервере) или использовать Aggregation Framework (гео запросы поддерживаются с 2,4) См. Это http://docs.mongodb.org/manual/release-notes/2.4/#improvements-to-the-aggregation-framework И это примеры: http://stackoverflow.com/a/15209920/ 728287 –