添加附加查询时,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);
这样它会为您的查询设置半径。
我正在使用 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);
这样它会为您的查询设置半径。