2011-04-04 4 views
3

Можно ли добавить дополнительные фильтры при использовании geoNear в mongodb? Так, например, сказать, что я мои записи выглядят следующим образом:mongodb geoNear + дополнительные фильтры?

{ 
_id: {}, 
cid: 1, 
latlon: [ -74.07096147537231, 40.9088747684256 ] 
} 

Могу ли я передать «чид», чтобы быть уверенным, что только записи с «ИДС», который равен «1»? Если это невозможно с помощью geoNear, как мне это сделать? Я использую geoNear, потому что он возвращает расстояние ...

Спасибо!

ответ

10

Да, конечно, это возможно. Вы можете использовать любую фильтрацию с $ рядом, как обычно:

db.places.find({ latlon: { $near : [50,50] } }, {cid: 1}) 

Update:

Если вам нужно расстояние использовать db.runCommand, если нет необходимости расстояние - db.collection.find как обычно.

documentation От:

Команда geoNear имеет дополнительное преимущество возвращения расстояния каждый элемент от указанной точки в результатах, а также некоторые диагностики для устранения неполадок.

Существует query параметр в db.runCommand, вы можете использовать его как это:

db.runCommand({ geoNear : "latlon" , near : [ 50 , 50 ], num : 10, 
       query : { cid: 1 } }); 
+0

но я использую что-то вроде: db.runCommand ({geoNear: "LOCS", рядом с: [0, 0], сферическая: истинная, maxDistance: range/earthRadius}); Если я использую db.example.find(); как я буду вычислять расстояние? – mike

+0

@mike: Я обновил ответ. Проверьте его для деталей. –

+0

Я нашел этот вариант «запрос:» после публикации вчера! Но я собираюсь отметить это как ответ на помощь! Спасибо! – mike

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