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: วิธีนับค่าที่แตกต่างกันในฟิลด์