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

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *