添加附加查询时,Doctrine MongoDB geoNear() 实例设置为 0

Doctrine MongoDB geoNear() dinstance set to 0 when adding additional query

我正在使用 geoNear() 来计算我的 Mongo 数据库中对象之间的距离。 即使使用 ->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 上工作的限制吗?

您需要使用"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);

这样它会为您的查询设置半径。