mongodb geoNear + дополнительные фильтры?
Можно ли добавить больше фильтров при использовании geoNear в mongodb? Например, предположим, что мои записи выглядят следующим образом:
{
_id: {},
cid: 1,
latlon: [ -74.07096147537231, 40.9088747684256 ]
}
Могу ли я передать "cid", чтобы убедиться, что только записи с "cid", равным "1"? Если это невозможно с geoNear, как бы я это сделал? Я использую geoNear, потому что он возвращает расстояние...
Спасибо!
1 answers
Да, конечно, это возможно. Вы можете использовать любую фильтрацию с $рядом, как обычно:
db.places.find( { latlon: { $near : [50,50] } }, {cid: 1} )
Обновление:
Если вам нужно расстояние, используйте db.runCommand
, если расстояние не нужно - db.collection.find
как обычно.
Из документации:
Команда geoNear имеет дополнительное преимущество, возвращая расстояние каждого элемента от указанной точки в результатах, а также некоторую диагностику для устранения неполадок.
Существует параметр query
в db.runCommand
, вы можете использовать его следующим образом:
db.runCommand( { geoNear : "latlon" , near : [ 50 , 50 ], num : 10,
query : { cid: 1 } } );