บทนี้จะแนะนำวิธีการแทรกข้อมูลเอกสารลงใน 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 คือการทำงานแบบอะตอมิกที่ระดับเอกสารเดียว