$nearSphere (قريب، كروي)

آخر تحديث: 2026-10-09

$nearSphere (قريب، كروي)

يُرجع $nearSphere المستندات الجغرافية مرتبة حسب المسافة الكروية (الدائرة العظمى). `{ loc: { $nearSphere: { $geometry: { type: 'Point', coordinates: [lng, lat] }, $maxDistance: 5000 } } }`. وعلى خلاف $near، يحسب دائمًا المسافة الكروية بالأمتار (تُستخدم المسافة المستوية فقط بواسطة $near على فهرس 2d). يتطلب فهرس 2dsphere.

الفئةالمكاني
إصدار MongoDB2.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 كم، مرتبة حسب المسافة الكروية

📌 ملاحظات

مزيد من الحالات العملية قريبًا.

📚 دروس ذات صلة

❓ الأسئلة الشائعة

Qما الفرق بين $nearSphere و $near؟
Aيستخدم $nearSphere دائمًا المسافة الكروية بالأمتار؛ بينما يستخدم $near المسافة المستوية على فهرس 2d.
Qما ترتيب الإحداثيات؟
AGeoJSON هو [خط الطول، خط العرض]؛ عكسها يجعل النتيجة بعيدة تمامًا.
Qهل يمكنني استخدام $near و $nearSphere معًا؟
Aلا، يجوز ظهور أحدهما فقط في الاستعلام.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%