$geoNear (قريب جغرافيًا)

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

$geoNear (قريب جغرافيًا)

يصدر $geoNear مستندات مرتبة حسب القرب الجغرافي ويجب أن يكون المرحلة الأولى من خط الأنابيب، متطلبًا فهرسًا جغرافيًا على المجموعة. يدعم حقل مخرج distanceField وحسابًا كرويًا أو مستويًا ومرشحات minDistance و maxDistance ومفتاح key للاختيار بين عدة حقول جغرافية. كل نتيجة تكتسب مسافة محسوبة.

الفئةالمتقدم والتشخيص
إصدار MongoDB1.0+
لغة المثالmongosh (الطرفية)

📝 الصيغة

{ $geoNear: { near: { type: "Point", coordinates: [ <longitude>, <latitude> ] }, distanceField: "<distanceField>", spherical: <bool>, maxDistance: <meters>, query: <filter> } }

⚙️ المعلمات

nearنقطة المرجع، وهي نقطة GeoJSON أو مصفوفة إحداثيات قديمة.
distanceFieldاسم الحقل الذي يستقبل المسافة المحسوبة.
sphericalعندما تكون true، تُحسب المسافات باستخدام الهندسة الكروية.
queryمرشِّح استعلام إضافي.

القيمة المرجعة:تدفق مستندات مرتَّب حسب المسافة، مع تضمين distanceField

▶ مثال

نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):

// $geoNear: الأماكن ضمن 5 كم
db.places.aggregate([
  { $geoNear: {
    near: { type: 'Point', coordinates: [-73.98, 40.75] },
    distanceField: 'dist',
    spherical: true,
    maxDistance: 5000
  } }
])

المخرجات:

// مرتبة حسب المسافة تصاعديًا، كل مستند يحمل dist

📌 ملاحظات

📚 دروس ذات صلة

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

Qماذا يحدث دون فهرس جغرافي؟
Aيرمي خطأ؛ يجب أن تملك المجموعة فهرسًا جغرافيًا 2dsphere أو 2d.
Qهل يمكن تصفية النتائج حسب المسافة؟
Aنعم، عبر maxDistance و minDistance، بالأمتار للوضع الكروي.
Qهل يمكن إضافة مرشحات استعلام إضافية؟
Aنعم، عبر معامل query، مثل { query: { category: 'restaurant' } }.
Web-Tutorial.com

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

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

100%