對具有重複 ID 的總成績執行多列 MongoDB 分組求和
為此,請將 aggregate() 與 $group 搭配使用。我們使用文件建立一個集合 -
> db.demo627.insertOne({id:101,"Name":"Chris","Marks":54});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9acb306c954c74be91e6b2")
}
> db.demo627.insertOne({id:102,"Name":"Bob","Marks":74});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9acb3c6c954c74be91e6b3")
}
> db.demo627.insertOne({id:101,"Name":"Chris","Marks":87});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9acb426c954c74be91e6b4")
}
> db.demo627.insertOne({id:102,"Name":"Mike","Marks":70});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9acb4b6c954c74be91e6b5")
}在 find() 方法的幫助下,從集合中顯示所有文件 -
> db.demo627.find();
此操作會生成以下輸出 -
{ "_id" : ObjectId("5e9acb306c954c74be91e6b2"), "id" : 101, "Name" : "Chris", "Marks" : 54 }
{ "_id" : ObjectId("5e9acb3c6c954c74be91e6b3"), "id" : 102, "Name" : "Bob", "Marks" : 74 }
{ "_id" : ObjectId("5e9acb426c954c74be91e6b4"), "id" : 101, "Name" : "Chris", "Marks" : 87 }
{ "_id" : ObjectId("5e9acb4b6c954c74be91e6b5"), "id" : 102, "Name" : "Mike", "Marks" : 70 }以下是使用 MongoDB 分組多列求和以計算具有重複 ID 的總成績的查詢 -
> db.demo627.aggregate([
... { "$group": {
... "_id": {
... "id" : "$id",
.. . "Name":"$Name"
... },
... "Marks": { "$sum": "$Marks" }
... }},
... { "$group": {
... "_id": {
... "id" : "$_id.id",
... "Name": "$_id.Name"
... },
...
... "TotalMarks": { "$sum": "$Marks" }
... }}
... ], { "allowDiskUse": true }
... );此操作會生成以下輸出 -
{ "_id" : { "id" : 101, "Name" : "Chris" }, "TotalMarks" : 141 }
{ "_id" : { "id" : 102, "Name" : "Bob" }, "TotalMarks" : 74 }
{ "_id" : { "id" : 102, "Name" : "Mike" }, "TotalMarks" : 70 }
廣告
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP