Node.js - MongoDB Sort

Kết quả của truy vấn find() trên một bộ sưu tập trong cơ sở dữ liệu MongoDB có thể được sắp xếp theo thứ tự tăng dần hoặc giảm dần của một trường nhất định trong tài liệu. Trình điều khiển mongodb cho Node.js có phương thức sort() được định nghĩa trong đối tượng Collection.

Để sắp xếp kết quả của một truy vấn MongoDB trong Node.js, bạn có thể sử dụng phương thức sort(). Phương thức này cho phép bạn sắp xếp các tài liệu trả về theo giá trị của một hoặc nhiều trường theo một hướng nhất định. Để sắp xếp các tài liệu trả về theo một trường theo thứ tự tăng dần (thấp nhất trước), hãy sử dụng giá trị 1. Để sắp xếp theo thứ tự giảm dần (cao nhất trước) thay vào đó, hãy sử dụng -1.

Cú pháp cho thứ tự tăng dần như sau −

result = col.find(query).sort(field:1);

Cú pháp cho sắp xếp giảm dần như sau −

result = col.find(query).sort(field:-1);

Ascending sort

Ví dụ dưới đây hiển thị các tài liệu trong bộ sưu tập sản phẩm theo thứ tự giá tăng dần.

Example

const {MongoClient} = require('mongodb');

async function main(){

   const uri = "mongodb://localhost:27017/";
   const client = new MongoClient(uri);

   try {
      await client.connect();
      await sortdocs(client, "mydb", "products");
   } finally {
      await client.close();
   }
}

main().catch(console.error);
async function sortdocs(client, dbname, colname){
   var mysort = { price: 1 };
   const result = await client.db(dbname).collection(colname).find({}).sort(mysort).toArray();
   result.forEach(element => {
      console.log(element);
   });
}

Output

{
  _id: new ObjectId('6580964f20f979d2e9a72ae9'),
  ProductID: 3,
  Name: 'Router',
  price: 2000
}
{
  _id: new ObjectId('6580964f20f979d2e9a72aea'),
  ProductID: 4,
  Name: 'Scanner',
  price: 5000
}
{
  _id: new ObjectId('6580964f20f979d2e9a72aeb'),
  ProductID: 5,
  Name: 'Printer',
  price: 9000
}
{
  _id: new ObjectId('65809214693bd4622484dce3'),
  ProductID: 1,
  Name: 'Laptop',
  Price: 25000
}
{
_id: new ObjectId('6580964f20f979d2e9a72ae8'),
  ProductID: 2,
  Name: 'TV',
  price: 40000
}

Descending sort

Để tạo danh sách tài liệu từ bộ sưu tập sản phẩm theo thứ tự giảm dần của trường tên, hãy thay đổi hàm sortdocs() thành như sau −

Example

async function sortdocs(client, dbname, colname){
   var mysort = { Name: -1 };
   const result = await client.db(dbname).collection(colname).find({}).sort(mysort).toArray();
   result.forEach(element => {
      console.log(element);
   });
});

Output

{
  _id: new ObjectId('6580964f20f979d2e9a72ae8'),
  ProductID: 2,
  Name: 'TV',
  price: 40000
}
{
  _id: new ObjectId('6580964f20f979d2e9a72aea'),
  ProductID: 4,
  Name: 'Scanner',
  price: 5000
}
{
  _id: new ObjectId('6580964f20f979d2e9a72ae9'),
  ProductID: 3,
  Name: 'Router',
  price: 2000
}
{
_id: new ObjectId('6580964f20f979d2e9a72aeb'),
  ProductID: 5,
  Name: 'Printer',
  price: 9000
}
{
  _id: new ObjectId('65809214693bd4622484dce3'),
  ProductID: 1,
  Name: 'Laptop',
  Price: 25000
}