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 (по убыванию)

Мы можем использовать следующий код для сортировки документов в коллекции Teams сначала по убыванию «баллов», а затем по убыванию «отскоков»:

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: как сгруппировать по нескольким полям

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.