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

フィールドを結合またはマージしてからカウントするMongoDB集約?


フィールドを結合またはマージしてからカウントを実行するには、$groupを$sumおよび$sortとともに使用します。ドキュメントを使用してコレクションを作成しましょう-

> db.demo647.insertOne({"Subject":"MySQL"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9c86316c954c74be91e6ee")
}
> db.demo647.insertOne({"Subject":"MongoDB"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9c86356c954c74be91e6ef")
}
> db.demo647.insertOne({"Subject":"MySQL"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9c86376c954c74be91e6f0")
}
> db.demo647.insertOne({"Subject":"SQL Server"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9c86406c954c74be91e6f1")
}
> db.demo647.insertOne({"Subject":"MongoDB"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9c86436c954c74be91e6f2")
}
> db.demo647.insertOne({"Subject":"PL/SQL"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9c864b6c954c74be91e6f3")
}
> db.demo647.insertOne({"Subject":"MongoDB"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9c86c16c954c74be91e6f4")
}

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

> db.demo647.find();

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

{ "_id" : ObjectId("5e9c86316c954c74be91e6ee"), "Subject" : "MySQL" }
{ "_id" : ObjectId("5e9c86356c954c74be91e6ef"), "Subject" : "MongoDB" }
{ "_id" : ObjectId("5e9c86376c954c74be91e6f0"), "Subject" : "MySQL" }
{ "_id" : ObjectId("5e9c86406c954c74be91e6f1"), "Subject" : "SQL Server" }
{ "_id" : ObjectId("5e9c86436c954c74be91e6f2"), "Subject" : "MongoDB" }
{ "_id" : ObjectId("5e9c864b6c954c74be91e6f3"), "Subject" : "PL/SQL" }
{ "_id" : ObjectId("5e9c86c16c954c74be91e6f4"), "Subject" : "MongoDB" }

以下は、フィールドを結合またはマージしてからカウントするクエリです-

> db.demo647.aggregate([ { "$group": { "_id": "$Subject", "COUNT": { "$sum": 1 } } }, { "$sort": { "COUNT": -1 } }, { "$limit": 2 } ] );

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

{ "_id" : "MongoDB", "COUNT" : 3 }
{ "_id" : "MySQL", "COUNT" : 2 }

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

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

  2. MongoDBの集約と投影?

    このために、aggregate()と一緒に$projectを使用します。集約された$projectは、要求されたフィールドを持つドキュメントをパイプラインの次のステージに渡します。 ドキュメントを使用してコレクションを作成しましょう- > db.demo762.insertOne({ ...    "_id" : { ...       "userId":101, ...       "userName":"Chris" ...