تُقدم MongoDB، وهي قاعدة بيانات وثائق NoSQL، إمكانات استعلام قوية. يستكشف هذا الدليل تقنيات فعّالة لاسترجاع الوثائق التي تطابق قيمًا متعددة عبر حقول متنوعة، مع التركيز على مُشغّلات MongoDB الرئيسية.
محتويات
- فهم بنية استعلام MongoDB
- استخدام مُشغّل $in
- دمج الشروط باستخدام $or
- دمج الشروط باستخدام $and
- إنشاء استعلامات معقدة
- اعتبارات الأداء
- الأسئلة الشائعة
فهم بنية استعلام 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
؟ ج: لا يوجد حد صارم، لكن الاستعلامات الكبيرة جدًا غير فعالة. حافظ على الاستعلامات موجزة.