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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *