Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

การรวมข้อมูล MongoDB ที่มี ID เหมือนกันในเอกสารต่างกัน

การจัดกลุ่มข้อมูลด้วย $group ใน Aggregate

ใช้ $group ใน aggregate() เพื่อรวมเอกสารที่มีค่า ID เหมือนกัน

สร้างข้อมูลตัวอย่าง

> db.demo602.insertOne({id:1,Name:"Chris"});
> db.demo602.insertOne({id:2,Name:"David"});
> db.demo602.insertOne({id:1,Name:"Bob"});
> db.demo602.insertOne({id:3,Name:"Mike"});
> db.demo602.insertOne({id:2,Name:"John"});
> db.demo602.insertOne({id:1,Name:"Sam"});

แสดงข้อมูลทั้งหมด

> db.demo602.find();

ผลลัพธ์:

{ "_id" : ObjectId("5e960080ed011c280a0905c9"), "id" : 1, "Name" : "Chris" }
{ "_id" : ObjectId("5e960086ed011c280a0905ca"), "id" : 2, "Name" : "David" }
{ "_id" : ObjectId("5e96008ced011c280a0905cb"), "id" : 1, "Name" : "Bob" }
{ "_id" : ObjectId("5e960092ed011c280a0905cc"), "id" : 3, "Name" : "Mike" }
{ "_id" : ObjectId("5e960099ed011c280a0905cd"), "id" : 2, "Name" : "John" }
{ "_id" : ObjectId("5e9600a1ed011c280a0905ce"), "id" : 1, "Name" : "Sam" }

คิวรี Aggregate เพื่อรวมชื่อตาม ID

> db.demo602.aggregate([
    { $group: {
        '_id': {id:"$id", "Name" : "$Name"},
        "count" : { "$sum": 1 }
    }},
    { $group: {
        '_id': "$_id.id",
        "ListOfName" : {"$push" : {Name:"$_id.Name", Frequency: "$count"}}
    }},
], {'allowDiskUse': true});

ผลลัพธ์

{ "_id" : 2, "ListOfName" : [ { "Name" : "John", "Frequency" : 1 }, { "Name" : "David", "Frequency" : 1 } ] }
{ "_id" : 3, "ListOfName" : [ { "Name" : "Mike", "Frequency" : 1 } ] }
{ "_id" : 1, "ListOfName" : [ { "Name" : "Sam", "Frequency" : 1 }, { "Name" : "Bob", "Frequency" : 1 }, { "Name" : "Chris", "Frequency" : 1 } ] }