Вы можете использовать следующий синтаксис для сортировки документов в 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: как сгруппировать по нескольким полям