Mongodb: як знайти максимальне значення в колекції
Ви можете використовувати наступні методи, щоб знайти максимальне значення поля в MongoDB:
Спосіб 1. Повернути документ, що містить максимальне значення
db.teams.find().sort({" field ": -1 }).limit( 1 )
Цей фрагмент коду сортує всі документи в колекції в порядку спадання на основі певного поля, а потім повертає лише перший документ.
Спосіб 2: повертає лише максимальне значення
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: як перевірити, чи поле містить рядок