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

MongoDBドキュメントを集計して昇順で並べ替えますか?


MongoDBアグリゲーションで$sortを使用します。ドキュメントを使用してコレクションを作成しましょう-

> db.demo652.insertOne({
...    value:10,
...    "details" : [{
...       "ProductName" : "Product-1",
...       "ProductQuantity" : 8,
...       "ProductPrice" : 500
...    }, {
...          "ProductName" : "Product-2",
...          "ProductQuantity" : 7,
...          "ProductPrice" : 500
...
...       }]
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9f0730e3c3cd0dcff36a62")
}
>
> db.demo652.insertOne({
...    value:5,
...    "details" : [{
...       "ProductName" : "Product-1",
...       "ProductQuantity" : 8,
...       "ProductPrice" : 500
...       }, {
...          "ProductName" : "Product-2",
...          "ProductQuantity" : 7,
...          "ProductPrice" : 500
...
...       }]
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9f0740e3c3cd0dcff36a63")
}

find()メソッドを使用してコレクションからすべてのドキュメントを表示する-

> db.demo652.find();

これにより、次の出力が生成されます-

{ "_id" : ObjectId("5e9f0730e3c3cd0dcff36a62"), "value" : 10, "details" : [ { "ProductName" : "Product-1", "ProductQuantity" : 8, "ProductPrice" : 500 }, { "ProductName" : "Product-2", "ProductQuantity" : 7, "ProductPrice" : 500 } ] }
{ "_id" : ObjectId("5e9f0740e3c3cd0dcff36a63"), "value" : 5, "details" : [ { "ProductName" : "Product-1", "ProductQuantity" : 8, "ProductPrice" : 500 }, { "ProductName" : "Product-2", "ProductQuantity" : 7, "ProductPrice" : 500 } ] }
>

以下は昇順でソートするためのクエリです-

> db.demo652.aggregate([{
...    "$unwind": "$details"
...    }, {
...       "$match": {}
...    }, {
...       "$group": {
...          "ProductPrice": {
...             "$first": "$value"
...          },
...          "details": {
...             "$push": {
...                "ProductName": "$details.ProductName"
...             }
...          },
...          "_id": "$_id"
...       }
...    }, {
...       "$sort": {
...          "ProductPrice": 1
...       }
...    }, {
...       "$project": {
...          "_id": 0,
...          "ProductPrice": 1,
...          "details": 1
...    }
... }]).pretty()

これにより、次の出力が生成されます-

{
   "ProductPrice" : 5,
   "details" : [
      {
         "ProductName" : "Product-1"
      },
      {
         "ProductName" : "Product-2"
      }
   ]
}
{
   "ProductPrice" : 10,
   "details" : [
      {
         "ProductName" : "Product-1"
      },
      {
         "ProductName" : "Product-2"
      }
   ]
}

  1. 異なるドキュメント内の同様のIDを持つ要素のMongoDB集約?

    このようなドキュメントのグループ化には、MongoDBaggregate()で$groupを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo602.insertOne({id:1,Name:"Chris"});{    "acknowledged" : true, "insertedId" : ObjectId("5e960080ed011c280a0905c9") } > db.demo602.insertOne({id:2,Name:"

  2. MongoDB集計で複数のフィールドでカウント

    複数のフィールドでカウントするには、MongoDBで$facetを使用します。 $ facetは、同じ入力ドキュメントのセットの単一ステージ内で複数の集約パイプラインを処理します。ドキュメントを使用してコレクションを作成しましょう- > db.demo721.insertOne( ...    { ... ...       "details1": { ...          "id":101 ... ...