Mongodb: วิธีแทรกหากไม่มีอยู่
คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อแทรกเอกสารลงในคอลเลกชันใน MongoDB ได้เฉพาะในกรณีที่ยังไม่มีอยู่:
db.teams.update( { team: 'Hornets' }, { $setOnInsert : {team: 'Hornets', points: '58', rebounds: '20'} }, {upsert: true } )
รหัสเฉพาะนี้จะตรวจสอบว่าช่อง “ทีม” มีค่าเป็น “Hornets” หรือไม่ หากมีค่านี้ก็จะไม่มีอะไรเกิดขึ้น
อย่างไรก็ตาม หากไม่มีค่านี้ ก็จะแทรกเอกสารที่มีค่าเฉพาะสำหรับฟิลด์ “ทีม”, “คะแนน” และ “รีบาวด์”
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ
ตัวอย่าง: แทรกหากไม่มีอยู่ใน MongoDB
สมมติว่าเรามีคอลเลกชันที่เรียกว่า ทีม ซึ่งมีเอกสารดังต่อไปนี้:
db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8}) db.teams.insertOne({team: " Spurs ", points: 35, rebounds: 12}) db.teams.insertOne({team: " Rockets ", points: 20, rebounds: 7}) db.teams.insertOne({team: " Warriors ", points: 25, rebounds: 5}) db.teams.insertOne({team: " Cavs ", points: 23, rebounds: 9})
สมมติว่าเราใช้โค้ดต่อไปนี้เพื่อพยายามแทรกเอกสารสำหรับทีม “Mavs”:
db.teams.update( { team: 'Mavs' }, { $setOnInsert : {team: 'Mavs', points: '58', rebounds: '20'} }, {upsert: true } )
ช่อง “ทีม” มีข้อมูลสำหรับ “Mavs” อยู่แล้ว โดยจะไม่มีการแก้ไขเอกสารใดๆ
อย่างไรก็ตาม สมมติว่าเราใช้โค้ดต่อไปนี้เพื่อแทรกเอกสารสำหรับทีม “Hornets”:
db.teams.update( { team: 'Hornets' }, { $setOnInsert : {team: 'Hornets', points: '58', rebounds: '20'} }, {upsert: true } )
เนื่องจากฟิลด์ “ทีม” ยังไม่มีข้อมูลสำหรับ “Hornets” เอกสารใหม่จะถูกเพิ่มลงในคอลเลกชันพร้อมค่าที่เราระบุสำหรับแต่ละฟิลด์
นี่คือลักษณะของคอลเลกชันที่อัปเดต:
{ _id: ObjectId("6203df361e95a9885e1e764a"), team: 'Mavs', points: 30, rebounds: 8 } { _id: ObjectId("6203df361e95a9885e1e764b"), team: 'Spurs', points: 35, rebounds: 12 } { _id: ObjectId("6203df361e95a9885e1e764c"), team: 'Rockets', points: 20, rebounds: 7 } { _id: ObjectId("6203df361e95a9885e1e764d"), team: 'Warriors', points: 25, rebounds: 5 } { _id: ObjectId("6203df361e95a9885e1e764e"), team: 'Cavs', points: 23, rebounds: 9 } { _id: ObjectId("6203e17de42bfba74fc73325"), team: 'Hornets', dots: '58', rebounds: '20' }
โปรดทราบว่ามีการเพิ่มเอกสารใหม่สำหรับทีม “Hornets”
หมายเหตุ : คุณสามารถค้นหาเอกสารฉบับเต็มสำหรับฟังก์ชัน $upsert ได้ที่นี่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน MongoDB:
MongoDB: วิธีเพิ่มฟิลด์ใหม่
MongoDB: วิธีลบฟิลด์
MongoDB: วิธีนับค่าที่แตกต่างกันในฟิลด์