Non è affatto la "stessa" query. Esiste una netta differenza nell'utilizzo di un $match
fase, poiché il "filtraggio" viene eseguito solo "dopo" che sono stati trovati i "risultati più vicini". Ciò significa che potresti restituire risultati "meno" poiché i criteri non vengono emessi in combinazione.
Ecco perché c'è una "query"
opzione in $geoNear
:
db.place.aggregate(
[
{
$geoNear: {
spherical: true,
near: { type: "Point", coordinates: [ 18.416145, -33.911973 ] },
distanceField: "dist",
query: {
"schedule.key": { "$eq": "vo4lRN_Az0uwOkgBzOERyw" }
}
}
}
])
Ora è la stessa domanda. Oppure sarebbe esattamente lo stesso se usassi $nearSphere
. Poiché $near
non tiene conto della curvatura della terra nei calcoli della distanza. $nearSphere
e $geoNear
fa.
Ma il punto principale è la combinazione con "query"
opzione, poiché questo è l'unico modo per ottenere veramente entrambi i criteri considerati nella ricerca iniziale.