Computer >> Máy Tính >  >> Lập trình >> MongoDB

Làm cách nào để sắp xếp mảng bên trong trong MongoDB?

Bạn có thể đạt được điều này với sự trợ giúp của khung tổng hợp trong MongoDB. Để hiểu nó, chúng ta hãy tạo một bộ sưu tập với tài liệu. Truy vấn để tạo một bộ sưu tập với tài liệu như sau:

> db.sortInnerArrayDemo.insertOne(
...
...    {
...       "EmployeeDetails":
...       {
...          "EmployeeAddress":
...          {
...             "EmployeeCountry":
...             [
...                {
...                   "EmployeeZipCode":1003,
...                   "EmployeeStreetName":"7885 Trusel Street"
...                },
...                {
...                   "EmployeeZipCode":1001,
...                   "EmployeeStreetName":"7390 Gonzales Drive"
...                },
...                {
...                   "EmployeeZipCode":1002,
...                   "EmployeeStreetName":"444 N.Myres Rd."
...                }
...             ]
...          }
...       }
...    }
...
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6f07d3da34711ecf87a5b8")
}

Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find (). Truy vấn như sau:

> db.sortInnerArrayDemo.find().pretty();

Sau đây là kết quả:

{
   "_id" : ObjectId("5c6f07d3da34711ecf87a5b8"),
   "EmployeeDetails" : {
      "EmployeeAddress" : {
         "EmployeeCountry" : [
         {
            "EmployeeZipCode" : 1003,
            "EmployeeStreetName" : "7885 Trusel Street"
         },
         {
            "EmployeeZipCode" : 1001,
            "EmployeeStreetName" : "7390 Gonzales Drive"
         },
         {
            "EmployeeZipCode" : 1002,
            "EmployeeStreetName" : "444 N.Myres Rd."
         }
      ]}
   }
}

Sau đây là truy vấn để sắp xếp một mảng bên trong.

Trường hợp 1 :Sắp xếp thứ tự tăng dần.

Truy vấn như sau:

> db.sortInnerArrayDemo.aggregate(
... {$unwind: '$EmployeeDetails.EmployeeAddress.EmployeeCountry'},
... {$sort: {'EmployeeDetails.EmployeeAddress.EmployeeCountry.EmployeeZipCode': 1}},
... {$group: {_id: '$_id', 'EmpCountry': {$push:
'$EmployeeDetails.EmployeeAddress.EmployeeCountry'}}},
... {$project: {'EmployeeDetails.EmployeeAddress.EmployeeCountry':
'$EmpCountry'}}).pretty();

Sau đây là kết quả hiển thị mảng bên trong được sắp xếp theo thứ tự tăng dần trên cơ sở mã EmployeeZipCode:

{
   "_id" : ObjectId("5c6f07d3da34711ecf87a5b8"),
   "EmployeeDetails" : {
      "EmployeeAddress" : {
         "EmployeeCountry" : [
            {
               "EmployeeZipCode" : 1001,
               "EmployeeStreetName" : "7390 Gonzales Drive"
            },
            {
               "EmployeeZipCode" : 1002,
               "EmployeeStreetName" : "444 N.Myres Rd."
            },
            {
               "EmployeeZipCode" : 1003,
               "EmployeeStreetName" : "7885 Trusel Street"
            }
         ]
      }
   }
}

Trường hợp 2 :Sắp xếp thứ tự theo thứ tự giảm dần

Truy vấn như sau:

> db.sortInnerArrayDemo.aggregate(
... {$unwind: '$EmployeeDetails.EmployeeAddress.EmployeeCountry'},
... {$sort: {'EmployeeDetails.EmployeeAddress.EmployeeCountry.EmployeeZipCode':-1}},
... {$group: {_id: '$_id', 'EmpCountry': {$push:
'$EmployeeDetails.EmployeeAddress.EmployeeCountry'}}},
... {$project: {'EmployeeDetails.EmployeeAddress.EmployeeCountry':
'$EmpCountry'}}).pretty();

Sau đây là kết quả hiển thị mảng bên trong được sắp xếp theo thứ tự giảm dần trên cơ sở mã EmployeeZipCode:

{
   "_id" : ObjectId("5c6f07d3da34711ecf87a5b8"),
   "EmployeeDetails" : {
      "EmployeeAddress" : {
         "EmployeeCountry" : [
            {
               "EmployeeZipCode" : 1003,
               "EmployeeStreetName" : "7885 Trusel Street"
            },
            {
               "EmployeeZipCode" : 1002,
               "EmployeeStreetName" : "444 N.Myres Rd."
            },
            {
               "EmployeeZipCode" : 1001,
               "EmployeeStreetName" : "7390 Gonzales Drive"
            }
         ]
      }
   }
}