این فصل یکی از توابع پرس و جوی مکانی MongoDB را معرفی می‌کند که بر اساس فاصله، داده‌های سند را پرس و جو می‌کند.

سناریوهای کاربرد: جستجوی فروشگاه‌های نزدیک و پیدا کردن افراد نزدیک.

آموزش پیش‌نیاز

فرمت ذخیره‌سازی داده‌های مکانی MongoDB

پیش‌نیازهای پرس و جو بر اساس فاصله به شرح زیر است:

  • هر داده سند شامل یک فیلد است که داده مختصر را ذخیره می‌کند، به عنوان مثال: فیلد موقعیت مختصر موقعیت فروشگاه را ذخیره می‌کند.
  • ایجاد یک فهرست فضایی 2D یا 2dsphere.

اپراتور $near

MongoDB از اپراتور $near برای پرس و جوی داده سند بر اساس فاصله استفاده می‌کند.

فرمت:

{
   <فیلد مختصر>: { // فیلدی که داده مختصر را ذخیره می‌کند
     $near: {
       $geometry: { // تنظیم مختصر مرجع برای مقایسه
          type: "Point" ,
          coordinates: [ طول جغرافیایی , عرض جغرافیایی ]
       },
       $maxDistance: حداکثر فاصله، به متر،
       $minDistance: حداقل فاصله، به متر
     }
   }
}

توجه: داده‌های بازگشتی از پرس‌وجوی $near از نزدیک‌ترین به دورترین مرتب می‌شوند.

مثال

فرض کنید که مجموعه فروشگاه اطلاعات فروشگاه را ذخیره می‌کند، جایی که فیلد موقعیت مختصر موقعیت هر فروشگاه را ذخیره می‌کند. پرس و جوی زیر فروشگاه نزدیک‌ترین به من را پیدا می‌کند (حداقل فاصله ۱۰۰۰ متر، حداکثر فاصله ۵۰۰۰ متر).

db.shop.find(
   {
     location:
       { $near :
          {
            $geometry: { type: "Point",  coordinates: [ -73.9667, 40.78 ] }, // مختصرهای من
            $minDistance: 1000, // حداقل فاصله
            $maxDistance: 5000 // حداکثر فاصله
          }
       }
   }
)