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

集計関数を実装するためのMongoDBクエリ


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

> db.demo121.insertOne(
...    {
...       "Id" : 101,
...       "Details" : [
...          {
...             "SubjectId" : "1",
...             "SubjectName" : "MongoDB",
...             "Score" : 76
...          },
...          {
...             "SubjectId" : "2",
...             "SubjectName" : "MySQL",
...             "Score" : 76
...          },
...          {
...             "SubjectId" : "3",
...             "SubjectName" : "Java",
...             "Score" : 76
...          }
...       ]
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2f1c60140daf4c2a3544b3")
}

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

> db.demo121.find();

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

{
   "_id" : ObjectId("5e2f1c60140daf4c2a3544b3"), "Id" : 101, "Details" : [
      { "SubjectId" : "1", "SubjectName" : "MongoDB", "Score" : 76 },
      { "SubjectId" : "2", "SubjectName" : "MySQL", "Score" : 76 },
      { "SubjectId" : "3", "SubjectName" : "Java", "Score" : 76 }
   ]
}

以下は、集計関数を実装するためのクエリです-

> db.demo121.aggregate([
...    { "$match": { "Id": 101 } },
...    { "$unwind": "$Details" },
...    {
...       "$group": {
...          "_id": "$Details.SubjectId",
...          "count": { "$sum": 1 },
...          "Details": {
...             "$push": {
...                "SubjectName": "$Details.SubjectName"
...             }
...          }
...       }
...    },
...    {
...       "$group": {
...          "_id": null,
...          "List": {
...             "$push": {
...                "SubId": "$_id",
...                "Details": "$Details"
...             }
...          }
...       }
...    }
... ], function (err, out) {
...    res.json(out);
... });

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

{
   "_id" : null, "List" : [
      { "SubId" : "3", "Details" : [ { "SubjectName" : "Java" } ] },
      { "SubId" : "2", "Details" : [ { "SubjectName" : "MySQL" } ] },
      { "SubId" : "1", "Details" : [ { "SubjectName" : "MongoDB" } ] }
   ] 
}

  1. 配列に$inを実装するMongoDBクエリ

    ドキュメントを使用してコレクションを作成しましょう- > db.demo520.insertOne({"ListOfName":["John","Bob"]});{    "acknowledged" : true,    "insertedId" : ObjectId("5e899fb4b3fbf26334ef6114") } > db.demo520.insertOne({"ListOfName":[

  2. MongoDBアグリゲートに$matchと$projectを実装します

    $ matchはドキュメントをフィルタリングして、指定された条件に一致するドキュメントのみを次のパイプラインステージに渡します。 $ projectは、要求されたフィールドを含むドキュメントをパイプラインの次のステージに渡します。 例を見て、ドキュメントを使用してコレクションを作成しましょう- > db.demo545.insert({Name:"Chris",details:{SubjectScore1:56,SubjectScore2:56}}) WriteResult({ "nInserted" : 1 }) > db.demo54