الفصل 3: MongoDB - الاستعلامات المشروطة
يقدم هذا الفصل استعلامات مشروطة في MongoDB، والتي تشبه عمليات المقارنة مثل "يساوي" و"أكبر من" و"أصغر من" في عبارات SQL.
العمليات المشروطة المدعومة بواسطة MongoDB
العامل | الوصف |
---|---|
$eq | "يساوي"، مماثل لعامل الـ= في SQL |
$gt | "أكبر من"، مماثل لعامل الـ> في SQL |
$gte | "أكبر من أو يساوي"، مماثل لعامل الـ>= في SQL |
$in | يطابق قيمة في مصفوفة، أي قيمة واحدة، مماثل للاستعلامات في SQL |
$lt | "أقل من"، مماثل لعامل الـ< في SQL |
$nin | لا يطابق أي قيمة في المصفوفة، مماثل لعامل "not in" في SQL |
بيانات الاختبار
بيانات مجموعة الجرد كالتالي
{ _id: 1, item: { name: "ab", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] }
{ _id: 2, item: { name: "cd", code: "123" }, qty: 20, tags: [ "B" ] }
{ _id: 3, item: { name: "ij", code: "456" }, qty: 25, tags: [ "A", "B" ] }
{ _id: 4, item: { name: "xy", code: "456" }, qty: 30, tags: [ "B", "A" ] }
{ _id: 5, item: { name: "mn", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }
$eq (مطابقة متساوية)
db.inventory.find( { qty: { $eq: 20 } } )
db.inventory.find( { "item.name": { $eq: "ab" } } )
// مختصر، يمكن تجاهل عامل الـ$eq، qty = 20
db.inventory.find( { qty: 20 } )
ما يعادله في SQL:
select * from inventory where qty = 20
// هذا مجرد مثال، SQL لا يدعم تنسيق الحقول المتداخلة مثل item.name
select * from inventory where item.name = 20
$gt (أكبر من)
db.inventory.find( { qty: { $gt: 20 } } )
ما يعادله في SQL:
select * from inventory where qty > 20
$gte (أكبر من أو يساوي)
db.inventory.find( { qty: { $gte: 20 } } )
ما يعادله في SQL:
select * from inventory where qty >= 20
$in
يطابق قيمة واحدة في المصفوفة
db.inventory.find( { qty: { $in: [ 5, 15 ] } } )
ما يعادله في SQL:
select * from inventory where qty in (5, 15)
$nin
العملية المعاكسة لعامل الـ$in
db.inventory.find( { qty: { $nin: [ 5, 15 ] } } )
ما يعادله في SQL:
select * from inventory where qty not in (5, 15)
$lt (أقل من)
db.inventory.find( { qty: { $lt: 20 } } )
ما يعادله في SQL:
select * from inventory where qty < 20