[กันลืม] กับการ update แบบ array list ใน mongoDB

KakyKad
2 min readJun 10, 2019

--

เนื่องจาก น๊านๆนานๆ จะได้มีการ update data แบบที่มี data เป็น array สักที ก็จะลืมคำสั่งในการ update หน่อยๆ วันนี้เลยเขียนเอาไว้ให้ตัวเองนึกได้สักหน่อย

//ข้อมูล data ที่อยู่ใน mongoDB collection name : report
{
"_id" : ObjectId("5cfe5b2a4bb30927c792f70c"),
"student_id" : "573021104-4",
"account_name" : "Nareenart",
"transcript" : [
{
"thai" : "A",
"eng" : "B+",
"match" : "F"
}
]
}
ตัวอย่างข้อมูลใน mongoDB ก่อน update

ข้อมูลเดิมที่มีอยู่ Nareenart นั้น ติด F วิชาคณิตศาสตร์ แต่แล้ว Nareenart ได้ทำการแก้เกรดของตัวเองแล้วได้ C+

จะทำการใส่คำสั่ง update เข้าไปแบบนี้ เพื่อแก้เกรดจาก F ให้เป็น C+

db.getCollection('report').updateOne({student_id: "573021104-4", "transcript.match" : "F" }, {
$set: {
"transcript.$.match": "C+"
}
})
ตัวอย่างข้อมูลใน mongoDB หลัง update

student_id เป็น key ในการหาค่าของมัน

“transcript.macth” : “F” คือค่าข้อมูลเดิมที่เราต้องการจะ update

$set คำสั่ง update operator ตามด้วย “transcript.$.match” : “C+” ค่าที่ update ใหม่เข้าไป

>> $ << เป็น syntax ของมันที่เอาไว้ใช้กับ array

ซึ่งถ้า update สำเร็จจะขึ้นข้อมูลแบบนี้

matchedCount = 1.0, modifiedCount = 1.0 ถ้ามัน = 0 แสดงว่า query หาไม่เจอนะจ๊ะ และมันจะไม่ update ค่าให้เราด้วย

reference : https://docs.mongodb.com/manual/reference/operator/update/positional/?fbclid=IwAR31PbSWKkNIMTozCnPT-UDXLzigz3ISyTarB5QkNLDUHEorP0KJwyyQUTo

--

--

KakyKad
KakyKad

Written by KakyKad

เขียนไปเรื่อย

No responses yet