Det är inte alls samma fråga. Det finns en tydlig skillnad i att använda en separat $match
steg, eftersom "filtreringen" endast görs "efter" de "närmaste resuts" har hittats. Detta innebär att du potentiellt returnerar "färre" resultat eftersom kriterierna inte utfärdas i kombination.
Det är därför det finns en "fråga"
alternativ 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 är det samma fråga. Eller det skulle vara exakt samma sak om du använde $nearSphere
. Sedan $nära
tar inte hänsyn till jordens krökning i avståndsberäkningar. $nearSphere
och $geoNear
gör.
Men huvudpoängen är att kombinera med "fråga"
alternativet, eftersom det är det enda sättet du verkligen får båda kriterierna beaktade i den första sökningen.