MongoDB Tutorials

إتقان استعلامات MongoDB: مطابقة قيم متعددة

Spread the love

تُقدم MongoDB، وهي قاعدة بيانات وثائق NoSQL، إمكانات استعلام قوية. يستكشف هذا الدليل تقنيات فعّالة لاسترجاع الوثائق التي تطابق قيمًا متعددة عبر حقول متنوعة، مع التركيز على مُشغّلات MongoDB الرئيسية.

محتويات

فهم بنية استعلام MongoDB

استعلامات MongoDB هي وثائق تشبه JSON. تتوافق الحقول في الاستعلام مع الحقول في وثائقك؛ تحدد القيم معايير المطابقة. على سبيل المثال، للعثور على وثيقة حيث يكون حقل name هو “John Doe”:


db.collection.find({ name: "John Doe" })

استخدام مُشغّل $in

يُطابق مُشغّل $in بكفاءة حقلًا واحدًا مع قيم متعددة. لنعتبر مجموعة products مع حقل category:


db.products.find({ category: { $in: ["Electronics", "Clothing"] } })

هذا يسترجع المنتجات في فئات “Electronics” أو “Clothing”.

دمج الشروط باستخدام $or

يُدمج مُشغّل $or شروطًا متعددة؛ تطابق الوثيقة إذا كانت شرط واحد على الأقل صحيحًا. للعثور على منتجات في “Electronics” أو بسعر يزيد عن 100 دولار:


db.products.find({
  $or: [
    { category: "Electronics" },
    { price: { $gt: 100 } }
  ]
})

دمج الشروط باستخدام $and

يتطلب مُشغّل $and أن تكون جميع الشروط صحيحة. للعثور على منتجات “Electronics” بأقل من 50 دولارًا:


db.products.find({
  $and: [
    { category: "Electronics" },
    { price: { $lt: 50 } }
  ]
})

في كثير من الأحيان، يكون $and ضمنيًا:


db.products.find({ category: "Electronics", price: { $lt: 50 } })

إنشاء استعلامات معقدة

اجمع المشغلات لاستعلامات متطورة. على سبيل المثال، ابحث عن منتجات في “Electronics” أو “Clothing” بتكلفة أقل من 50 دولارًا:


db.products.find({
  $or: [
    { category: { $in: ["Electronics", "Clothing"] } },
    { price: { $lt: 50 } }
  ]
})

اعتبارات الأداء

يمكن أن يؤثر استخدام $or مع العديد من الشروط على الأداء. تعمل الفهارس على تحسين سرعة الاستعلام بشكل كبير. أنشئ فهارس على الحقول التي يتم الاستعلام عنها بشكل متكرر (مثل category و price).

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

  • س: هل يمكنني استخدام $in مع حقول متعددة؟ ج: لا. استخدم $or للحقول المتعددة.
  • س: كيف يؤثر $or مع العديد من الشروط على الأداء؟ ج: يمكن أن يتدهور الأداء. قم بتحسين الاستعلامات واستخدم الفهارس.
  • س: هل هناك حدود على الشروط مع $or/$and؟ ج: لا يوجد حد صارم، لكن الاستعلامات الكبيرة جدًا غير فعالة. حافظ على الاستعلامات موجزة.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *