Mongodb: كيفية الفرز حسب حقول متعددة
يمكنك استخدام بناء الجملة التالي لفرز المستندات في MongoDB حسب حقول متعددة:
db.myCollection.find().sort( { " field1 ": 1, " field2 ": -1 } )
يقوم هذا الكود الخاص بفرز المستندات الموجودة في المجموعة المسماة myCollection أولاً حسب الحقل 1 تصاعديًا، ثم حسب الحقل 2 تنازليًا.
توضح الأمثلة التالية كيفية استخدام بناء الجملة هذا مع فريق التحصيلات مع المستندات التالية:
db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8}) db.teams.insertOne({team: " Spurs ", points: 30, rebounds: 12}) db.teams.insertOne({team: " Rockets ", points: 20, rebounds: 7}) db.teams.insertOne({team: " Warriors ", points: 25, rebounds: 5}) db.teams.insertOne({team: " Cavs ", points: 25, rebounds: 9})
مثال 1: فرز حسب حقول متعددة في MongoDB (تصاعدي)
يمكننا استخدام الكود التالي لفرز المستندات في مجموعة Teams أولاً عن طريق زيادة “النقاط” ثم زيادة “الارتدادات”:
db.teams.find().sort( { " points ": 1, " rebounds ": 1 } )
يقوم هذا الاستعلام بإرجاع النتائج التالية:
{ _id: ObjectId("61f952c167f1c64a1afb203b"), team: 'Rockets', points: 20, rebounds: 7 } { _id: ObjectId("61f952c167f1c64a1afb203c"), team: 'Warriors', points: 25, rebounds: 5 } { _id: ObjectId("61f952c167f1c64a1afb203d"), team: 'Cavs', points: 25, rebounds: 9 } { _id: ObjectId("61f952c167f1c64a1afb2039"), team: 'Mavs', points: 30, rebounds: 8 } { _id: ObjectId("61f952c167f1c64a1afb203a"), team: 'Spurs', points: 30, rebounds: 12 }
لاحظ أنه يتم فرز المستندات بزيادة حقل “النقاط” (من الأصغر إلى الأكبر) ثم بزيادة حقل “الارتدادات” (من الأصغر إلى الأكبر).
المثال 2: الفرز حسب حقول متعددة في MongoDB (تنازلي)
يمكننا استخدام الكود التالي لفرز المستندات في مجموعة الفرق أولاً عن طريق تقليل “النقاط” ثم تقليل “الارتدادات”:
db.teams.find().sort( { " points ": -1, " rebounds ": -1 } )
يقوم هذا الاستعلام بإرجاع النتائج التالية:
{ _id: ObjectId("61f952c167f1c64a1afb203a"), team: 'Spurs', points: 30, rebounds: 12 } { _id: ObjectId("61f952c167f1c64a1afb2039"), team: 'Mavs', points: 30, rebounds: 8 } { _id: ObjectId("61f952c167f1c64a1afb203d"), team: 'Cavs', points: 25, rebounds: 9 } { _id: ObjectId("61f952c167f1c64a1afb203c"), team: 'Warriors', points: 25, rebounds: 5 } { _id: ObjectId("61f952c167f1c64a1afb203b"), team: 'Rockets', points: 20, rebounds: 7 }
لاحظ أنه يتم فرز المستندات عن طريق تنازلي حقل “النقاط” (من الأكبر إلى الأصغر) ثم عن طريق تنازلي حقل “الارتدادات” (من الأكبر إلى الأصغر).
ملاحظة : يمكنك العثور على الوثائق الكاملة لوظيفة الفرز هنا .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ العمليات الشائعة الأخرى في MongoDB:
MongoDB: كيفية الفرز حسب التاريخ
MongoDB: كيفية التجميع والعد
MongoDB: كيفية التجميع حسب حقول متعددة