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

MongoDB: ใช้ Positional Operator $[] กับอาร์เรย์

Positional Operator แบบ $[] (all positional operator) ใช้สำหรับอัปเดต ทุกสมาชิก ในอาร์เรย์ พร้อมใช้งานใน MongoDB 3.6+ สร้างคอลเลกชันตัวอย่าง:

> db.demo324.insertOne({"ListOfValues":[10,20,30]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e516349f8647eb59e562073") }

แสดงข้อมูล:

> db.demo324.find().pretty();

อัปเดตทุกสมาชิกในอาร์เรย์ ListOfValues ให้เป็น "MongoDB":

> db.demo324.update({"ListOfValues":[10,20,30]},{ $set: { "ListOfValues.$[]": "MongoDB" } }, { upsert: true });
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

ตรวจสอบผลลัพธ์:

> db.demo324.find().pretty();

ผลลัพธ์ (ทุกสมาชิกกลายเป็น "MongoDB"):

{ "_id" : ObjectId("5e516349f8647eb59e562073"), "ListOfValues" : [ "MongoDB", "MongoDB", "MongoDB" ] }

Positional Operators ใน MongoDB

Operatorคำอธิบายรองรับตั้งแต่
$อัปเดตสมาชิกแรกที่ match query (top-level array)MongoDB 1.4+
$[]อัปเดต ทุก สมาชิกในอาร์เรย์MongoDB 3.6+
$[<identifier>]อัปเดตสมาชิกที่ match arrayFilters (filtered)MongoDB 3.6+

ตัวอย่าง $[] กับอาร์เรย์ซ้อน

หากมีอาร์เรย์ซ้อน: { arr: [ [1,2], [3,4] ] } ใช้ { $set: { "arr.$[]": 0 } } จะเปลี่ยนทุก sub-array เป็น 0 (แทนที่ sub-array ทั้งหมด) หากต้องการเข้าถึงสมาชิกใน sub-array ใช้ arr.$[].$[]