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

การแปลงเอกสารเดียวที่มีอาร์เรย์เป็นหลายเอกสารในคอลเลกชันใหม่ด้วย MongoDB

ใช้ $unwind และ $out ใน Aggregate Pipeline

$unwind แยกอาร์เรย์เป็นหลายเอกสาร แล้ว $out เขียนผลลัพธ์ไปยังคอลเลกชันใหม่

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

> db.demo757.insertOne({ "id": 101, "Name": ["John", "Bob", "Chris"] });
> db.demo757.insertOne({ "id": 102, "Name": ["David"] });

แสดงข้อมูลก่อนแปลง

> db.demo757.find();

ผลลัพธ์:

{ "_id" : ObjectId("5eb025745637cd592b2a4ae2"), "id" : 101, "Name" : [ "John", "Bob", "Chris" ] }
{ "_id" : ObjectId("5eb025755637cd592b2a4ae3"), "id" : 102, "Name" : [ "David" ] }

คิวรีแปลงและสร้างคอลเลกชันใหม่ demo758

> db.demo757.aggregate([
    {$unwind: '$Name'},
    {$project: {_id: 0}},
    {$out: 'demo758'}
])
> db.demo758.find();

ผลลัพธ์ในคอลเลกชัน demo758

{ "_id" : ObjectId("5eb02582192bedc4738b5881"), "id" : 101, "Name" : "John" }
{ "_id" : ObjectId("5eb02582192bedc4738b5882"), "id" : 101, "Name" : "Bob" }
{ "_id" : ObjectId("5eb02582192bedc4738b5883"), "id" : 101, "Name" : "Chris" }
{ "_id" : ObjectId("5eb02582192bedc4738b5884"), "id" : 102, "Name" : "David" }