これは「同じ」クエリではありません。別の $ match を使用することには、明確な違いがあります。コード>
ステージでは、「フィルタリング」は「最も近い結果」が見つかった「後」にのみ実行されるためです。これは、基準が組み合わせて発行されないため、「より少ない」結果を返す可能性があることを意味します。
そのため、 "query"
があります $ geoNear
のオプション
:
db.place.aggregate(
[
{
$geoNear: {
spherical: true,
near: { type: "Point", coordinates: [ 18.416145, -33.911973 ] },
distanceField: "dist",
query: {
"schedule.key": { "$eq": "vo4lRN_Az0uwOkgBzOERyw" }
}
}
}
])
これは同じクエリです。または、 $nearSphere<を使用した場合もまったく同じです。 / code>
。 $ near
以降
距離の計算では、地球の曲率は考慮されません。 $ nearSphere
および $ geoNear
ただし、要点は "query"
と組み合わせることです。 これが、最初の検索で両方の基準が考慮される唯一の方法であるためです。