mongodb geoNear + дополнительные фильтры?


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

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

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

Спасибо!

Author: mike, 2011-04-05

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 } } );
 11
Author: Andrew Orsich, 2011-04-05 15:41:35