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