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
          }
       }
   }
)