mongodb geoNear + дополнительные фильтры? - PullRequest
3 голосов
/ 05 апреля 2011

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

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

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

Спасибо!

1 Ответ

11 голосов
/ 05 апреля 2011

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

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

Обновление:

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

Из документации :

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

В db.runCommand есть параметр query, вы можете использовать его следующим образом:

db.runCommand( { geoNear : "latlon" , near : [ 50 , 50 ], num : 10,
                 query : { cid: 1 } } );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...