این فصل یکی از توابع پرس و جوی مکانی 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 // حداکثر فاصله
}
}
}
)