Mongodb: كيفية استخدام استعلام "ليس في"
يمكنك استخدام الصيغة التالية للعثور على كافة المستندات التي لا توجد فيها قيمة حقل معين في قائمة معينة من القيم:
db.collection.find({field1: { $nin : [" value1 ", " value2 ", " value3 "]}})
يبحث هذا الاستعلام المحدد عن كافة المستندات التي لا تساوي فيها قيمة الحقل 1 القيمة 1 أو القيمة 2 أو القيمة 3.
توضح الأمثلة التالية كيفية استخدام بناء الجملة هذا عمليًا.
مثال 1: استعلام عن “NOT IN” بقيمة
لنفترض أن لدينا فريق تحصيل لديه المستندات التالية:
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 }) db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 }) db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 }) db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 }) db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })
يمكننا استخدام الكود التالي للعثور على جميع المستندات التي لا يساوي فيها حقل “الفريق” قيمة “الصواريخ”:
db.teams.find({team: { $nin : [" Rockets "]}})
يقوم هذا الاستعلام بإرجاع المستندات التالية:
{ _id: ObjectId("619527e467d6742f66749b72"), team: 'Cavs', position: 'Guard', points: 33 } { _id: ObjectId("619527e467d6742f66749b6e"), team: 'Mavs', position: 'Guard', points: 31 } { _id: ObjectId("619527e467d6742f66749b6f"), team: 'Mavs', position: 'Guard', points: 22 }
لاحظ أن المستندات الوحيدة التي تم إرجاعها هي تلك التي لا يساوي فيها حقل “الفريق” “الصواريخ”.
مثال 2: الاستعلام عن “NON IN” مع قائمة القيم
لنفترض أن لدينا فريق تحصيل لديه المستندات التالية:
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 }) db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 }) db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 }) db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 }) db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })
يمكننا استخدام الكود التالي للعثور على جميع المستندات التي لا يساوي فيها حقل “الفريق” قيمة “Rockets” أو “Cavs”:
db.teams.find({team: { $nin : [" Rockets ", " Cavs "]}})
يقوم هذا الاستعلام بإرجاع المستندات التالية:
{ _id: ObjectId("619527e467d6742f66749b6e"), team: 'Mavs', position: 'Guard', points: 31 } { _id: ObjectId("619527e467d6742f66749b6f"), team: 'Mavs', position: 'Guard', points: 22 }
لاحظ أن المستندات الوحيدة التي تم إرجاعها هي تلك التي لا يساوي فيها حقل “الفريق” “Rockets” أو “Cavs”.
ملاحظة : يمكنك العثور على الوثائق الكاملة للوظيفة $nin هنا .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ العمليات الشائعة الأخرى في MongoDB:
MongoDB: كيفية الاستعلام باستخدام التعبير العادي “أعجبني”.
MongoDB: كيفية التحقق مما إذا كان الحقل يحتوي على سلسلة
MongoDB: كيفية إضافة حقل جديد إلى المجموعة
MongoDB: كيفية إزالة حقل من كل مستند