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);
Таким образом, он устанавливает радиус для вашего запроса.