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: как проверить, содержит ли поле строку