1つのMongoDB集計クエリで並べ替えてグループ化しますか?
単一のクエリで並べ替えとグループ化を行うには、集約フレームワークとともに$group演算子を使用します。まず、ドキュメントを使用してコレクションを作成しましょう-
> db.sortAndGroupDemo.insertOne({
Price :40,
Product: 10
});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ce8f2bc78f00858fb12e907")
}
> db.sortAndGroupDemo.insertOne({
Price :100,
Product: 10
});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ce8f2bc78f00858fb12e908")
}
> db.sortAndGroupDemo.insertOne({
Price :90,
Product: 20
});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ce8f2bc78f00858fb12e909")
}
> db.sortAndGroupDemo.insertOne({
Price :200,
Product: 10
});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ce8f2bc78f00858fb12e90a")
}
> db.sortAndGroupDemo.insertOne({
Price :70,
Product: 20
});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ce8f2bc78f00858fb12e90b")
}
> db.sortAndGroupDemo.insertOne({
Price :70,
Product: 30
});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ce8f2bd78f00858fb12e90c")
} 以下は、find()メソッドを使用してコレクションからすべてのドキュメントを表示するためのクエリです-
> db.sortAndGroupDemo.find().pretty();
これにより、次の出力が生成されます-
{
"_id" : ObjectId("5ce8f2bc78f00858fb12e907"),
"Price" : 40,
"Product" : 10
}
{
"_id" : ObjectId("5ce8f2bc78f00858fb12e908"),
"Price" : 100,
"Product" : 10
}
{
"_id" : ObjectId("5ce8f2bc78f00858fb12e909"),
"Price" : 90,
"Product" : 20
}
{
"_id" : ObjectId("5ce8f2bc78f00858fb12e90a"),
"Price" : 200,
"Product" : 10
}
{
"_id" : ObjectId("5ce8f2bc78f00858fb12e90b"),
"Price" : 70,
"Product" : 20
}
{
"_id" : ObjectId("5ce8f2bd78f00858fb12e90c"),
"Price" : 70,
"Product" : 30
}> 以下は、単一のMongoDB集計クエリで並べ替えてグループ化するクエリです-
> db.sortAndGroupDemo.aggregate(
[
{ "$group": { "_id": "$Product" }},
{ "$sort" : { "Price": 1 }},
{ "$project":{"_id":1 }}
]
); これにより、次の出力が生成されます-
{ "_id" : 30 }
{ "_id" : 20 }
{ "_id" : 10 } -
_idでグループ化するMongoDBクエリ
MongoDBで_idでグループ化するには、$groupを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo529.insertOne({"Score":10});{ "acknowledged" : true, "insertedId" : ObjectId("5e8b1d5bef4dcbee04fbbbe4") } > db.demo529.insertOne({"Score":20});{ &
-
MongoDBの集約と投影?
このために、aggregate()と一緒に$projectを使用します。集約された$projectは、要求されたフィールドを持つドキュメントをパイプラインの次のステージに渡します。 ドキュメントを使用してコレクションを作成しましょう- > db.demo762.insertOne({ ... "_id" : { ... "userId":101, ... "userName":"Chris" ...