Není to vůbec "stejný" dotaz. Existuje výrazný rozdíl v použití samostatného $match
fázi, protože „filtrování“ se provádí až „po“ nalezení „nejbližších výsledků“. To znamená, že potenciálně vrátíte „méně“ výsledků, protože kritéria nejsou vydávána v kombinaci.
Proto existuje "dotaz"
možnost v $geoNear
:
db.place.aggregate(
[
{
$geoNear: {
spherical: true,
near: { type: "Point", coordinates: [ 18.416145, -33.911973 ] },
distanceField: "dist",
query: {
"schedule.key": { "$eq": "vo4lRN_Az0uwOkgBzOERyw" }
}
}
}
])
Nyní je to stejný dotaz. Nebo by to bylo úplně stejné, kdybyste použili $nearSphere
. Protože $near
nebere v úvahu zakřivení Země ve výpočtech vzdálenosti. $nearSphere
a $geoNear
ano.
Ale hlavním bodem je kombinace s "dotaz"
možnost, protože to je jediný způsob, jak při počátečním vyhledávání skutečně zohlednit obě kritéria.