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

คิวรี MongoDB อัปเดตทุกฟิลด์ของเอกสารในคอลเลกชันด้วยสูตรคำนวณ

ใช้ $mul กับ filtered positional operator $[ ]

อ็อปเรเตอร์ $mul คูณค่าของฟิลด์ด้วยตัวเลข ร่วมกับ $[ ] (all positional operator) เพื่ออัปเดตทุกอิลิเมนต์ในอาร์เรย์

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

> db.demo749.insertOne({"details":[{ "id":1, a:10 },{ "id":2, a:5 },{ "id":3, a:20 }]});

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

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

ผลลัพธ์:

{ "_id" : ObjectId("5eae6fb0a930c785c834e565"), "details" : [ { "id" : 1, "a" : 10 }, { "id" : 2, "a" : 5 }, { "id" : 3, "a" : 20 } ] }

คิวรีอัปเดตค่า a ทุกตัวในอาร์เรย์ details คูณด้วย 2/5 (0.4)

> db.demo749.update(
    {},
    { $mul: { "details.$[].a": 2/5 } },
    { multi:true }
)

ผลลัพธ์: WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

แสดงข้อมูลหลังอัปเดต

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

ผลลัพธ์: ค่า a ทุกตัวคูณ 0.4

{ "_id" : ObjectId("5eae6fb0a930c785c834e565"), "details" : [ { "id" : 1, "a" : 4 }, { "id" : 2, "a" : 2 }, { "id" : 3, "a" : 8 } ] }