2012-12-12 1 views
0

У меня есть запрос, который должен сделать следующее: Возьмите два набора координат и верните места, расположенные рядом с любой из координат.Mongoosejs: using query.or() с геопространственным запросом

Я работаю над Node.js с Mongoose.js.

Исходный код запроса ниже (прежде чем я попытался с помощью query.or() синтаксис:

query.or([{geoNear: "loc", near: start, spherical: true},{geoNear: "loc", near: end}]); 

Проблема, кажется, использует $or, потому что я сначала попробовал код как:

  that.count({ 
       _cat: _cat , 
       $or: [ 
        { 
         loc: { $nearSphere: start } 
        }, 
        { 
         loc: { $nearSphere: end } 
        } 
       ]}, function(err, c) { 
        // do something 
       }); 

When Я ищу в одном месте без $or (т.е. start или end) Я могу получить результаты. Вот как я уверен, что проблема связана с $or.

Поддерживает ли поддержка mongoDB/mongoose с помощью $or с геопространственным поиском, или я делаю что-то неправильно?

ответ

0

Похоже, что $or не работает, поэтому я выбрал сейчас выполнение двух запросов, а затем оцениваю результат каждого, чтобы вернуть счет. Это работает для меня, потому что мне не нужен фактический счет, но мне нужно знать, есть ли какие-либо местоположения на определенном расстоянии от каждой точки.

Если у кого-то есть аналогичная проблема, и используйте этот подход как обход, не забудьте вставить второй запрос в обратном вызове первого запроса. Это, очевидно, более проблематично, если у вас есть более двух мест, которые вы запрашиваете.

+0

Вы когда-нибудь находили решение для одного гео-поиска с несколькими необязательными местоположениями? Я столкнулся с подобной проблемой. –

+0

Я честно не помню, что я делал. Я посмотрел на свою кодовую базу и не видел следа '$ или', поэтому я определенно нашел работу как-то. Mongo 206 теперь поддерживает использование $ или $ с данными геолокации –