Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
$geoNear
Tahap $geoNear agregasi mengembalikan dokumen dalam urutan kedekatan dengan titik tertentu. Ini menghitung jarak dari titik dan termasuk jarak dalam dokumen output.
Parameter
-
near: Titik dari mana untuk menghitung jarak, ditentukan sebagai GeoJSON atau koordinat warisan. -
distanceField: Nama bidang untuk menyimpan jarak yang dihitung. -
spherical: Boolean menunjukkan apakah akan menggunakan geometri bola (diperlukan untuk titik GeoJSON). -
maxDistance: Opsional. Jarak maksimum dari titik pusat. -
minDistance: Opsional. Jarak minimum dari titik pusat. -
query: Opsional. Kriteria filter tambahan untuk diterapkan. -
limit: Opsional. Jumlah maksimum dokumen untuk dikembalikan. -
key: Opsional. Bidang yang akan digunakan untuk kueri geospasial ketika beberapa indeks geospasial ada.
Contoh (MongoDB Shell)
Contoh berikut menunjukkan menggunakan $geoNear panggung untuk menemukan toko terdekat dengan lokasi tertentu.
Buat dokumen sampel
db.stores.createIndex({ location: "2dsphere" }); db.stores.insertMany([ { _id: 1, name: "Store A", location: { type: "Point", coordinates: [-122.4, 37.8] } }, { _id: 2, name: "Store B", location: { type: "Point", coordinates: [-122.5, 37.7] } }, { _id: 3, name: "Store C", location: { type: "Point", coordinates: [-122.3, 37.9] } } ]);
Contoh kueri
db.stores.aggregate([ { $geoNear: { near: { type: "Point", coordinates: [-122.4, 37.8] }, distanceField: "distance", spherical: true } } ]);
Keluaran
[
{ _id: 1, name: 'Store A', location: { type: 'Point', coordinates: [ -122.4, 37.8 ] }, distance: 0 },
{ _id: 3, name: 'Store C', location: { type: 'Point', coordinates: [ -122.3, 37.9 ] }, distance: 13877.82 },
{ _id: 2, name: 'Store B', location: { type: 'Point', coordinates: [ -122.5, 37.7 ] }, distance: 15557.89 }
]
Contoh kode
Untuk melihat contoh kode untuk menggunakan tahap $geoNear agregasi, pilih tab untuk bahasa yang ingin Anda gunakan: