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: كيفية التجميع حسب حقول متعددة