Het is helemaal niet dezelfde vraag. Er is een duidelijk verschil in het gebruik van een aparte $match
stadium, aangezien het "filteren" pas wordt gedaan "nadat" de "dichtstbijzijnde resultaten" zijn gevonden. Dit betekent dat u mogelijk "minder" resultaten retourneert, aangezien de criteria niet in combinatie worden uitgegeven.
Daarom is er een "query"
optie in $geoNear
:
db.place.aggregate(
[
{
$geoNear: {
spherical: true,
near: { type: "Point", coordinates: [ 18.416145, -33.911973 ] },
distanceField: "dist",
query: {
"schedule.key": { "$eq": "vo4lRN_Az0uwOkgBzOERyw" }
}
}
}
])
Dat is nu dezelfde vraag. Of het zou precies hetzelfde zijn als je $nearSphere
. Sinds $near
houdt geen rekening met de kromming van de aarde in afstandsberekeningen. $nearSphere
en $geoNear
doet.
Maar het belangrijkste punt is combineren met de "query"
optie, want dat is de enige manier waarop u echt beide criteria in overweging krijgt bij de eerste zoekopdracht.