MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBで内部配列をソートする方法は?


これは、MongoDBの集約フレームワークを使用して実現できます。それを理解するために、ドキュメントを使用してコレクションを作成しましょう。ドキュメントを使用してコレクションを作成するためのクエリは次のとおりです。

> 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")
}

find()メソッドを使用して、コレクションのすべてのドキュメントを表示します。クエリは次のとおりです。

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

出力は次のとおりです。

{
   "_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."
         }
      ]}
   }
}

以下は、内部配列を並べ替えるクエリです。

ケース1 :昇順で並べ替えます。

クエリは次のとおりです。

> 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();

以下は、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"
            }
         ]
      }
   }
}

ケース2 :降順で並べ替え

クエリは次のとおりです。

> 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();

以下は、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"
            }
         ]
      }
   }
}

  1. JavaScriptで日付配列を並べ替える方法

    このような日付を含む配列があるとします- const arr = [    [ '02/13/2015', 0.096 ],    [ '11/15/2013', 0.189 ],    [ '05/15/2014', 0.11 ],    [ '12/13/2013', 0.1285 ],    [ '01/15/2013', 0.12 ],    [ '01/15/2014',

  2. Androidで配列要素を並べ替える方法は?

    この例は、Androidで配列要素を並べ替える方法を示しています。 ステップ1 − Android Studioで新しいプロジェクトを作成し、[ファイル]⇒[新しいプロジェクト]に移動して、新しいプロジェクトを作成するために必要なすべての詳細を入力します。 ステップ2 −次のコードをres / layout/activity_main.xmlに追加します。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="https://schemas.a