บทนี้จะแนะนำวิธีการแทรกข้อมูลเอกสารลงใน MongoDB โดยใช้ mongo shell.

แทรกเอกสารเดี่ยว

เมธอด db.collection.insertOne() ใช้ในการแทรกเอกสารเดียวในคอลเล็กชัน (collection) ที่กำหนด

หากเอกสารไม่ระบุฟิลด์ _id MongoDB จะสร้าง ObjectId ที่ไม่ซ้ำกันให้กับฟิลด์ _id โดยอัตโนมัติ

หมายเหตุ: ObjectId เป็นตัวสร้างไอดีที่ไม่ซ้ำกันที่มีมาใช้ใน MongoDB สำหรับการสร้างไอดี

ตัวอย่าง: แทรกเอกสารลงในคอลเล็กชัน inventory:

db.inventory.insertOne(
   { item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
)

ผลลัพธ์:

{
	"acknowledged" : true,
	"insertedId" : ObjectId("609bf11dfc901345cafc438a")
}

หากการแทรกสำเร็จแล้ว มันจะคืนคีย์หลัก insertedId ฟิลด์เป็นไอดีที่สร้างโดย MongoDB โดยอัตโนมัติ กรณีที่คอลเล็กชัน inventory ยังไม่มีอยู่ มันก็จะถูกสร้างโดยอัตโนมัติด้วย

ค้นหาเอกสารที่แทรก:

> db.inventory.find( { item: "canvas" } )
{ "_id" : ObjectId("609bf11dfc901345cafc438a"), "item" : "canvas", "qty" : 100, "tags" : [ "cotton" ], "size" : { "h" : 28, "w" : 35.5, "uom" : "cm" } }

โดยใช้เมธอด find นำเงื่อนไขคิวรีเพื่อค้นหาเอกสารที่มีฟิลด์ item เท่ากับ "canvas".

แทรกเอกสารหลายเอกสาร

เมธอด db.collection.insertMany() สามารถแทรกเอกสารหลายๆ เอกสารไปยังคอลเล็กชัน ได้

ตัวอย่าง: แทรกเอกสารสามเอกสารโดยการส่งอาร์เรย์เข้าไปที่เมธอด insertMany:

db.inventory.insertMany([
   { item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },
   { item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },
   { item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }
])

ค่าที่คืน:

{
	"acknowledged" : true,
	"insertedIds" : [
		ObjectId("609bf30ffc901345cafc438b"),
		ObjectId("609bf30ffc901345cafc438c"),
		ObjectId("609bf30ffc901345cafc438d")
	]
}

คืนค่าไอดีของเอกสารที่แทรกใหม่สามเอกสารทั้งหมด

พฤติกรรมการแทรก

การสร้างคอลเล็กชัน

ใน MongoDB ไม่จำเป็นต้องสร้างคอลเล็กชันล่วงหน้า เมื่อทำการแทรกข้อมูลครั้งแรก ถ้าคอลเล็กชันยังไม่มีอยู่ มันก็จะถูกสร้างโดยอัตโนมัติ

ฟิลด์ _id

ใน MongoDB ทุกเอกสารที่เก็บอยู่ในคอลเล็กชันมีฟิลด์ _id เป็นไอดีที่ไม่ซ้ำกันที่ทำหน้าที่เป็นคีย์หลัก ถ้าเอกสารที่แทรกลงไปละไอดี _id มันก็จะสร้าง ObjectId ให้ด้วยอัตโนมัติ

อะตอมิก

ทุกกิจกรรมเขียนใน MongoDB คือการทำงานแบบอะตอมิกที่ระดับเอกสารเดียว