如何在 MongoDB 中彙總集合並按欄位計數進行分組?


在 MongoDB aggregate() 中,使用 $group 和聚合集合。我們用文件建立一個集合:

> db.demo616.insertOne({"details":{"Name":"Chris","Age":21}});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e99bfac65492f6c60d00283")
}
> db.demo616.insertOne({"details":{"Name":"Chris","Age":22}});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e99bfb065492f6c60d00284")
}
> db.demo616.insertOne({"details":{"Name":"Bob","Age":23}});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e99bfb865492f6c60d00285")
}
> db.demo616.insertOne({"details":{"Name":"Sam","Age":21}});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e99bfbd65492f6c60d00286")
}
> db.demo616.insertOne({"details":{"Name":"Chris","Age":24}});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e99bfc165492f6c60d00287")
}

使用 find() 方法顯示集合中的所有文件:

> db.demo616.find();

這將生成以下輸出:

{ "_id" : ObjectId("5e99bfac65492f6c60d00283"), "details" : { "Name" : "Chris", "Age" : 21 } }
{ "_id" : ObjectId("5e99bfb065492f6c60d00284"), "details" : { "Name" : "Chris", "Age" : 22 } }
{ "_id" : ObjectId("5e99bfb865492f6c60d00285"), "details" : { "Name" : "Bob", "Age" : 23 } }
{ "_id" : ObjectId("5e99bfbd65492f6c60d00286"), "details" : { "Name" : "Sam", "Age" : 21 } }
{ "_id" : ObjectId("5e99bfc165492f6c60d00287"), "details" : { "Name" : "Chris", "Age" : 24 } }

以下是根據欄位計數聚合集合並分組的查詢:

> db.demo616.aggregate(
... [
...    {
...       $group:{_id:"$details.Name",Total:{$sum:1}}}
... ]
... );

這將生成以下輸出:

{ "_id" : "Sam", "Total" : 1 }
{ "_id" : "Bob", "Total" : 1 }
{ "_id" : "Chris", "Total" : 3 }

更新時間:2020 年 5 月 12 日

599 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.