Това изобщо не е "същата" заявка. Има явна разлика в използването на отделен $matchкод>
етап, тъй като "филтрирането" се извършва само "след като" са намерени "най-близките резултати". Това означава, че потенциално връщате „по-малко“ резултати, тъй като критериите не се издават в комбинация.
Ето защо има "заявка"
опция в $geoNear
:
db.place.aggregate(
[
{
$geoNear: {
spherical: true,
near: { type: "Point", coordinates: [ 18.416145, -33.911973 ] },
distanceField: "dist",
query: {
"schedule.key": { "$eq": "vo4lRN_Az0uwOkgBzOERyw" }
}
}
}
])
Сега това е същото запитване. Или би било абсолютно същото, ако сте използвали $nearSphereкод>
. Тъй като $near
не отчита кривината на земята при изчисленията на разстоянието. $nearSphere
и $geoNear
прави.
Но основната точка е комбинирането с "query"
опция, тъй като това е единственият начин наистина да вземете предвид и двата критерия при първоначалното търсене.