Mongodb: كيفية العثور على الحد الأقصى للقيمة في المجموعة


يمكنك استخدام الطرق التالية للعثور على الحد الأقصى لقيمة الحقل في MongoDB:

الطريقة الأولى: إرجاع مستند يحتوي على الحد الأقصى للقيمة

 db.teams.find().sort({" field ": -1 }).limit( 1 )

يقوم هذا الجزء من التعليمات البرمجية بفرز كافة المستندات الموجودة في المجموعة بترتيب تنازلي بناءً على حقل معين، ثم يقوم بإرجاع المستند الأول فقط.

الطريقة الثانية: إرجاع القيمة القصوى فقط

 db.teams.find().sort({" field ": -1 }).limit( 1 ).toArray().map(function(u){ return u.field})

توضح الأمثلة التالية كيفية استخدام كل طريقة مع فريق التحصيل مع المستندات التالية:

 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 })

مثال 1: إرجاع مستند يحتوي على الحد الأقصى للقيمة

يمكننا استخدام الكود التالي لإرجاع المستند الذي يحتوي على الحد الأقصى للقيمة في حقل “النقاط”:

 db.teams.find().sort({" points ": -1 }).limit( 1 ) 

يقوم هذا الاستعلام بإرجاع المستند التالي:

 { _id: ObjectId("618285361a42e92ac9ccd2c6"),
  team: 'Cavs',
  position: 'Guard',
  points: 33 }

يتم إرجاع هذا المستند لأنه يحتوي على أعلى قيمة (33) في حقل “النقاط” بين كافة المستندات.

المثال 2: إرجاع القيمة القصوى فقط

يمكننا استخدام الكود التالي لإرجاع القيمة القصوى فقط في حقل “النقاط” في جميع المستندات:

 db.teams.find().sort({" points ": -1 }).limit( 1 ).toArray().map(function(u){ return u.points})

يُرجع هذا الاستعلام النتيجة التالية:

 [33]

لاحظ أنه يتم إرجاع القيمة القصوى نفسها (33) فقط بدلاً من المستند بأكمله الذي يحتوي على القيمة القصوى.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ العمليات الشائعة الأخرى في MongoDB:

MongoDB: كيفية التجميع والعد
MongoDB: كيفية التجميع حسب حقول متعددة
MongoDB: كيفية التحقق مما إذا كان الحقل يحتوي على سلسلة

Add a Comment

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