Doctrine MongoDB geoNear() имеет значение 0 при добавлении дополнительного запроса

Я использую geoNear() рассчитать расстояния между объектами в моей базе данных Монго. Запрос работает отлично, даже с дополнительными фильтрами полей, такими как ->field('name')->equals($name) так далее...

Это автоматически заполняет сопоставленное поле @ODM\Distance на объекте.

$this->getQueryBuilder()
->geoNear((float) $query['near_longitude'], (float) $query['near_latitude'])
->spherical(true)
->distanceMultiplier(self::EARTH_RD_KM);

Если я добавлю ->field('id')->in($array) однако это расстояние внезапно равно 0. Я не совсем уверен, где информация потеряна. Это ограничение того, как $in работает на MongoDB?

1 ответ

Вам нужно использовать функцию "maxDistance"

как это;

$this->getQueryBuilder()
    ->geoNear((float) $query['near_longitude'], (float)$query['near_latitude'])      

    ->spherical(true) 

    ->maxDistance(self::YOUR_DESIRED_KM_RADIUS / self::EARTH_RD_KM)

    ->distanceMultiplier(self::EARTH_RD_KM);

Таким образом, он устанавливает радиус для вашего запроса.

Другие вопросы по тегам