Det er slet ikke den "samme" forespørgsel. Der er en klar forskel på at bruge en separat $match
trin, da "filtreringen" kun udføres "efter" de "nærmeste resuts" er fundet. Det betyder, at du potentielt returnerer "mindre" resultater, da kriterierne ikke udstedes i kombination.
Det er derfor, der er en "forespørgsel"
mulighed i $geoNear
:
db.place.aggregate(
[
{
$geoNear: {
spherical: true,
near: { type: "Point", coordinates: [ 18.416145, -33.911973 ] },
distanceField: "dist",
query: {
"schedule.key": { "$eq": "vo4lRN_Az0uwOkgBzOERyw" }
}
}
}
])
Nu er det samme forespørgsel. Eller det ville være nøjagtigt det samme, hvis du brugte $nearSphere
. Siden $near
tager ikke højde for jordens krumning i afstandsberegninger. $nearSphere
og $geoNear
gør.
Men hovedpointen er at kombinere med "forespørgslen"
mulighed, da det er den eneste måde, du virkelig får begge kriterier i betragtning i den indledende søgning.