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

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *