複数のキーを使用したMongoDBアグリゲーション
複数のキーを使用して集約を実装するには、$ groupとともにaggregate()を使用します。ドキュメントを使用してコレクションを作成しましょう-
> db.demo190.insertOne(
... {
...
... "DueDate" : ISODate("2020-01-01"),
... "Value" : 10,
... "Name" : "Chris"
... }
...);
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3ad76403d395bdc21346bf")
}
>
> db.demo190.insertOne(
... {
...
... "DueDate" : ISODate("2020-02-05"),
... "Value" : 30,
... "Name" : "David"
... }
...);
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3ad76403d395bdc21346c0")
}
> db.demo190.insertOne(
... {
...
... "DueDate" : ISODate("2020-01-01"),
... "Value" : 40,
... "Name" : "Chris"
... }
...);
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3ad7f003d395bdc21346c1")
} find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.demo190.find();
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5e3ad76403d395bdc21346bf"), "DueDate" : ISODate("2020-01-01T00:00:00Z"), "Value" : 10, "Name" : "Chris" }
{ "_id" : ObjectId("5e3ad76403d395bdc21346c0"), "DueDate" : ISODate("2020-02-05T00:00:00Z"), "Value" : 30, "Name" : "David" }
{ "_id" : ObjectId("5e3ad7f003d395bdc21346c1"), "DueDate" : ISODate("2020-01-01T00:00:00Z"), "Value" : 40, "Name" : "Chris" } 以下は、複数のキーを使用してMongoDB集約を実装するためのクエリです-
> db.demo190.aggregate( [ { "$group": { "_id": { "Name": "$Name", "DueDate": { "$year": "$DueDate" } }, "Value": { "$sum": "$Value" } } } ], function(err,results) { console.log(results); } ); これにより、次の出力が生成されます-
{ "_id" : { "Name" : "David", "DueDate" : 2020 }, "Value" : 30 }
{ "_id" : { "Name" : "Chris", "DueDate" : 2020 }, "Value" : 50 } -
MongoDBドキュメントを集計して昇順で並べ替えますか?
MongoDBアグリゲーションで$sortを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo652.insertOne({ ... value:10, ... "details" : [{ ... "ProductName" : "Product-1", ... "ProductQuantity" : 8, ...  
-
MongoDB集計で複数のフィールドでカウント
複数のフィールドでカウントするには、MongoDBで$facetを使用します。 $ facetは、同じ入力ドキュメントのセットの単一ステージ内で複数の集約パイプラインを処理します。ドキュメントを使用してコレクションを作成しましょう- > db.demo721.insertOne( ... { ... ... "details1": { ... "id":101 ... ...