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

MongoDB集計を使用して特定のドキュメントの合計を計算するにはどうすればよいですか?


合計するには、$ sumを使用し、特定のドキュメントの合計を取得するには、MongoDBの$groupを使用してそれらをグループ化する必要があります。

まず、ドキュメントを使用してコレクションを作成しましょう-

>db.calculateSumOfDocument.insertOne({"ListOfUsers":["Carol","Bob"],"UsersDetails":[{"FirstUser":"Carol","TotalLikes":20},{"FirstUser":"Bob","TotalLikes":45}]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e084e9125ddae1f53b6220c")
}
>db.calculateSumOfDocument.insertOne({"ListOfUsers":["Carol","Bob"],"UsersDetails":[{"FirstUser":"Carol","TotalLikes":60},{"FirstUser":"Bob","TotalLikes":50}]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e084f6125ddae1f53b6220d")
}

以下は、find()メソッドを使用してコレクションからすべてのドキュメントを表示するためのクエリです-

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

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

{
   "_id" : ObjectId("5e084e9125ddae1f53b6220c"),
   "ListOfUsers" : [
      "Carol",
      "Bob"
   ],
   "UsersDetails" : [
      {
         "FirstUser" : "Carol",
         "TotalLikes" : 20
      },
      {
         "FirstUser" : "Bob",
         "TotalLikes" : 45
      }
   ]
}
{
   "_id" : ObjectId("5e084f6125ddae1f53b6220d"),
   "ListOfUsers" : [
      "Carol",
      "Bob"
   ],
   "UsersDetails" : [
      {
         "FirstUser" : "Carol",
         "TotalLikes" : 60
      },
      {
         "FirstUser" : "Bob",
         "TotalLikes" : 50
      }
   ]
}

以下は、集計を使用して特定のドキュメントの合計を計算するためのクエリです-

> db.calculateSumOfDocument.aggregate([
...    {
...       "$match": { "UsersDetails.FirstUser": "Carol" }
...    },
...    { "$unwind" : "$UsersDetails" },
...    {
...       "$match": { "UsersDetails.FirstUser": "Carol" }
...    },
...    {
...       "$group": {
...       "_id": null,
...       "total": { "$sum": "$UsersDetails.TotalLikes" }
...    }
... }
... ]);

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

{ "_id" : null, "total" : 80 }

  1. MongoDBシェルを使用してドキュメントから特定の値を持つアイテムを取得するにはどうすればよいですか?

    特定の値のアイテムを取得するには、find()を使用するだけです。ドキュメントを使用してコレクションを作成しましょう- > db.demo563.insertOne({"Name":"Chris","Age":21,"isMarried":true}){    "acknowledged" : true, "insertedId" : ObjectId("5e8f546c54b4472ed3e8e878") } > db.d

  2. 特定のフィールド値を持つドキュメントをフェッチするためのMongoDB集約?

    これには、aggregate()を使用します。値が「21」のフィールド「Age」を持つドキュメントをフェッチする必要があるとします。 ドキュメントを使用してコレクションを作成しましょう- > db.demo685.insertOne( ...    { ...       "details": ...       [ ...          { ...