$near (قريب، مرتب حسب المسافة)
آخر تحديث: 2026-10-09
$near (قريب، مرتب حسب المسافة)
يُرجع $near المستندات الجغرافية مرتبة حسب المسافة من نقطة، تصاعديًا. `{ loc: { $near: { $geometry: { type: 'Point', coordinates: [lng, lat] }, $maxDistance: 1000 } } }`. يتطلب فهرس 2dsphere أو 2d ولا يمكن دمجه مع $near أو $nearSphere آخر في الاستعلام نفسه.
| الفئة | المكاني |
|---|---|
| إصدار MongoDB | 2.4+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ <location field>: { $near: { $geometry: <Point>, $maxDistance: <meters> } } }
⚙️ المعلمات
| حقل الموضع | الحقل الذي يخزّن الموقع. |
|---|---|
| هندسة Point | GeoJSON Point بصيغة [خط الطول، خط العرض]. |
| maxDistance | اختياري؛ أقصى مسافة بالأمتار. |
القيمة المرجعة:مؤشر المستندات المطابقة (تصاعديًا حسب المسافة)
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $near: المتاجر ضمن 1000 متر من النقطة
db.stores.find({
loc: { $near: {
$geometry: { type: 'Point', coordinates: [-73.97, 40.75] },
$maxDistance: 1000
} }
})
المخرجات:
// يُرجع المتاجر ضمن 1000 متر، مرتبة حسب المسافة تصاعديًا
📌 ملاحظات
- تُرتَّب النتائج تلقائيًا حسب المسافة؛ لا حاجة للفرز
- يتطلب فهرس 2dsphere (GeoJSON) أو 2d (أزواج إحداثيات)
- تُقاس $maxDistance بالأمتار (GeoJSON)
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qهل نتائج $near مرتبة مسبقًا؟
Aنعم، تصاعديًا حسب المسافة — لا حاجة لفرز إضافي.
Qهل الفهرس إلزامي لـ $near؟
Aنعم، فهرس 2dsphere أو 2d، وإلا فسيحدث خطأ.
Qمتى يجب أن أختار $near بدلًا من $geoWithin؟
Aاختر $near لفرز المسافة؛ و$geoWithin للاحتواء فقط.