Ini sama sekali bukan kueri yang "sama". Ada perbedaan mencolok dalam menggunakan $match
tahap, karena "pemfilteran" hanya dilakukan "setelah" "hasil terdekat" ditemukan. Ini berarti Anda berpotensi mengembalikan hasil "kurang" karena kriteria tidak dikeluarkan dalam kombinasi.
Itu sebabnya ada "query"
opsi di $geoNear
:
db.place.aggregate(
[
{
$geoNear: {
spherical: true,
near: { type: "Point", coordinates: [ 18.416145, -33.911973 ] },
distanceField: "dist",
query: {
"schedule.key": { "$eq": "vo4lRN_Az0uwOkgBzOERyw" }
}
}
}
])
Sekarang itu pertanyaan yang sama. Atau akan sama persis jika Anda menggunakan $nearSphere
. Sejak $near
tidak memperhitungkan kelengkungan bumi dalam perhitungan jarak. $nearSphere
dan $geoNear
tidak.
Tapi poin utamanya adalah menggabungkan dengan "query"
pilihan, karena itulah satu-satunya cara Anda benar-benar mendapatkan kedua kriteria yang dipertimbangkan dalam pencarian awal.