การย้าย Element ระหว่าง Array ด้วย forEach
ใช้ forEach ตรวจสอบ Element ที่ต่างกัน และใช้ save() พร้อมเงื่อนไข
สร้าง Collection พร้อมข้อมูล
> db.demo646.insertOne(
... {
... "Information": [
... { id: 100, Name:"Chris" },
... { id: 100, Name:"Chris" },
... { id: 101, Name:"David" },
... { id: 100, Name:"Chris" }
... ],
... "different": []
... }
... )
{ "acknowledged" : true, "insertedId" : ObjectId("5e9c82ec6c954c74be91e6ed") }
แสดงเอกสารทั้งหมด
> db.demo646.find().pretty();
ผลลัพธ์:
{
"_id" : ObjectId("5e9c82ec6c954c74be91e6ed"),
"Information" : [
{ "id" : 100, "Name" : "Chris" },
{ "id" : 100, "Name" : "Chris" },
{ "id" : 101, "Name" : "David" },
{ "id" : 100, "Name" : "Chris" }
],
"different" : [ ]
}
คิวรีย้าย Element ที่ id=101 ไป Array different
> db.demo646.find({}).forEach(function(d) {
... d.different = d.Information.filter(function(v) { return v.id == 101 })
... d.Information = d.Information.filter(function(v) { return v.id != 101 })
... db.demo646.save(d)
... } ... )
แสดงเอกสารหลังย้าย
> db.demo646.find().pretty();
ผลลัพธ์:
{
"_id" : ObjectId("5e9c82ec6c954c74be91e6ed"),
"Information" : [
{ "id" : 100, "Name" : "Chris" },
{ "id" : 100, "Name" : "Chris" },
{ "id" : 100, "Name" : "Chris" }
],
"different" : [
{ "id" : 101, "Name" : "David" }
]
}