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

ดึง Group By Result พร้อม Arrays ใน MongoDB

การดึง Group By Result พร้อม Arrays

เพื่อดึง Group By Result พร้อม Arrays ให้ใช้ aggregate() จะใช้ Operator $addToSet ซึ่งจะเพิ่มค่าเข้า Array หากค่านั้นยังไม่มีอยู่

สร้าง Collection พร้อมข้อมูล

> db.demo498.insertOne({id:1,Name:["Chris"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e86192b987b6e0e9d18f553") }
> db.demo498.insertOne({id:2,Name:["David"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e86192d987b6e0e9d18f554") }
> db.demo498.insertOne({id:3,Name:["Chris"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e861931987b6e0e9d18f555") }
> db.demo498.insertOne({id:4,Name:["Bob"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e861942987b6e0e9d18f556") }
> db.demo498.insertOne({id:5,Name:["David"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e861947987b6e0e9d18f557") }

แสดงเอกสารทั้งหมด

> db.demo498.find();

ผลลัพธ์:

{ "_id" : ObjectId("5e86192b987b6e0e9d18f553"), "id" : 1, "Name" : [ "Chris" ] }
{ "_id" : ObjectId("5e86192d987b6e0e9d18f554"), "id" : 2, "Name" : [ "David" ] }
{ "_id" : ObjectId("5e861931987b6e0e9d18f555"), "id" : 3, "Name" : [ "Chris" ] }
{ "_id" : ObjectId("5e861942987b6e0e9d18f556"), "id" : 4, "Name" : [ "Bob" ] }
{ "_id" : ObjectId("5e861947987b6e0e9d18f557"), "id" : 5, "Name" : [ "David" ] }

คิวรี Group By พร้อม Array ของ IDs

> db.demo498.aggregate([{
...     $unwind : "$Name"
... }, {
...     $group : {
...         _id : "$Name",
...         Id : {
...             $addToSet : "$id"
...         }
...     }
... } ... ])

ผลลัพธ์:

{ "_id" : "David", "Id" : [ 5, 2 ] }
{ "_id" : "Bob", "Id" : [ 4 ] }
{ "_id" : "Chris", "Id" : [ 3, 1 ] }