Bu bölüm, MongoDB'nin mesafeye göre belge verilerini sorgulamanın bir yolu olan jeospatial sorgu işlevlerinden birini tanıtır.
Uygulama senaryoları: yakındaki mağazaları arama ve yakındaki insanları bulma.
Önkoşul Kılavuzu
MongoDB Jeospatial Veri Depolama Biçimi
Mesafeye göre veri sorgulamak için gerekli olanlar şunlardır:
- Her belge verisi, koordinat verilerini depolayan bir alan içerir, örneğin:
location
alanı bir mağazanın koordinatlarını depolar. - 2dsphere veya 2d uzamsal indeks oluşturun.
$near Operatörü
MongoDB, belge verilerini mesafeye göre sorgulamak için $near operatörünü kullanır.
Biçim:
{
<location alanı>: { // Koordinat verilerini depolayan alan
$near: {
$geometry: { // Karşılaştırma için referans koordinatlarını ayarlayın
type: "Nokta" ,
coordinates: [ boylam , enlem ]
},
$maxDistance: metre cinsinden maksimum mesafe,
$minDistance: metre cinsinden minimum mesafe
}
}
}
Not: $near sorgusu tarafından döndürülen veriler, en yakından en uzağa doğru sıralanır.
Örnek
Varsayalım ki shop
koleksiyonu mağaza verilerini depolar, burada location
alanı her mağazanın koordinatlarını depolar. Aşağıdaki sorgu, benim için en yakın mağazayı bulur (minimum mesafe 1000 metre, maksimum mesafe 5000 metre).
db.shop.find(
{
location:
{ $near :
{
$geometry: { type: "Nokta", coordinates: [ -73.9667, 40.78 ] }, // Benim koordinatlarım
$minDistance: 1000, // Minimum mesafe
$maxDistance: 5000 // Maksimum mesafe
}
}
}
)