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