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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *