MongoDB menyediakan banyak cara untuk menyisipkan dokumen ke dalam koleksi.
Berikut adalah 5 cara untuk menyisipkan dokumen ke dalam koleksi saat menggunakan mongo shell.
The insertOne()
Metode
insertOne()
metode menyisipkan satu dokumen ke dalam koleksi.
Nama lengkapnya adalah db.collection.insertOne()
, di mana collection
adalah nama koleksi untuk memasukkan dokumen ke dalamnya.
Berikut adalah contoh memasukkan dokumen ke dalam koleksi yang disebut pets
:
db.pets.insertOne( {
name: "Scratch",
type: "Cat"
} )
Hasil:
{ "acknowledged" : true, "insertedId" : ObjectId("5fe2d15637b49e0faf1af214") }
db.collection.insertOne()
metode mengembalikan dokumen yang berisi:
- Boolean
acknowledged
sebagaitrue
jika operasi berjalan dengan masalah tulis ataufalse
jika masalah penulisan dinonaktifkan. - Bidang
insertedId
dengan_id
nilai dokumen yang disisipkan.
The insertMany()
Metode
insertMany()
metode ini mirip dengan insertOne()
, kecuali memasukkan beberapa dokumen ke dalam koleksi.
Juga dengan cara yang mirip dengan insertOne()
, nama lengkapnya adalah db.collection.insertMany()
, di mana collection
adalah nama koleksi untuk memasukkan dokumen ke dalamnya. Ini berlaku untuk semua metode yang tercantum dalam artikel ini.
Berikut ini contoh penggunaan db.collection.insertMany()
untuk memasukkan beberapa dokumen ke dalam koleksi yang disebut pets
:
db.pets.insertMany([
{ _id: 1, name: "Wag", type: "Dog" },
{ _id: 2, name: "Bark", type: "Dog" },
{ _id: 3, name: "Meow", type: "Cat" }
])
Hasil:
{ "acknowledged" : true, "insertedIds" : [ 1, 2, 3 ] }
db.collection.insertMany()
metode mengembalikan dokumen yang berisi:
- Boolean
acknowledged
sebagaitrue
jika operasi berjalan dengan masalah tulis ataufalse
jika masalah penulisan dinonaktifkan. - Array
_id
nilai untuk setiap dokumen yang berhasil dimasukkan.
The insert()
Metode
insert()
metode ini seperti kombinasi insertOne()
dan insertMany()
. Ini memungkinkan Anda untuk memasukkan satu dokumen, atau beberapa dokumen ke dalam koleksi.
Berikut ini contoh penggunaan db.collection.insert()
untuk menyisipkan satu dokumen:
db.pets.insert(
{ name: "Bruce", type: "Bat" }
)
Hasil:
WriteResult({ "nInserted" : 1 })
Saat satu dokumen dimasukkan, db.collection.insert()
mengembalikan WriteResult
obyek. Ketika sebuah array dokumen dimasukkan, ia mengembalikan BulkWriteResult
objek.
Berikut ini contoh penggunaan db.collection.insert()
untuk menyisipkan banyak dokumen.
db.pets.insert([
{ _id: 1, name: "Wag", type: "Dog" },
{ _id: 2, name: "Bark", type: "Dog" },
{ _id: 3, name: "Meow", type: "Cat" }
])
Hasil:
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
Seperti disebutkan, sebuah BulkWriteResult
objek dikembalikan saat memasukkan array dokumen.
The bulkWrite()
Metode
bulkWrite()
metode ini memungkinkan Anda untuk melakukan operasi penulisan massal.
Sebenarnya, insertMany()
sudah melakukan operasi penyisipan massal. Sama dengan insert()
saat memasukkan array dokumen. Tapi bulkWrite()
memungkinkan Anda melakukan operasi penyisipan, pembaruan, dan penghapusan massal, semuanya dari satu panggilan metode.
Contoh:
db.pets.bulkWrite([
{ insertOne: { "document": { "_id": 1, "name": "Bubbles", "type": "Fish" }}},
{ insertOne: { "document": { "_id": 2, "name": "Wag", "type": "Dog" }}},
{ updateOne : {
"filter" : { "_id" : 3 },
"update" : { $set : { "name" : "Fluffy", "type" : "Cat" } },
"upsert" : true
} },
{ replaceOne : {
"filter" : { "_id" : 4 },
"replacement" : { "name" : "Bite", "type" : "Dog", "weight": 5 },
"upsert" : true
} }
])
Hasil:
{ "acknowledged" : true, "deletedCount" : 0, "insertedCount" : 2, "matchedCount" : 0, "upsertedCount" : 2, "insertedIds" : { "0" : 1, "1" : 2 }, "upsertedIds" : { "2" : 3, "3" : 4 } }
Dalam hal ini, koleksi sebenarnya tidak ada (saya menghapusnya mengikuti contoh sebelumnya), jadi satu-satunya dokumen yang sekarang ada di dalam koleksi adalah yang ditentukan dalam contoh ini.
Mari kita lihat koleksinya.
db.pets.find()
Hasil:
{ "_id" : 1, "name" : "Bubbles", "type" : "Fish" } { "_id" : 2, "name" : "Wag", "type" : "Dog" } { "_id" : 3, "name" : "Fluffy", "type" : "Cat" } { "_id" : 4, "name" : "Bite", "type" : "Dog", "weight" : 5 }
Seperti yang diharapkan, keempat dokumen dimasukkan.
Operasi Upser
Ini membawa kita ke metode kelima untuk memasukkan dokumen ke dalam koleksi di MongoDB – operasi upsert.
Ini lebih merupakan metode bersyarat untuk memasukkan dokumen. Upsert adalah opsi yang dapat Anda gunakan pada operasi pembaruan. Itu hanya menyisipkan dokumen baru jika dokumen yang ditentukan belum ada. Jika ada, maka dokumen asli diperbarui (dan tidak ada dokumen yang dimasukkan).
Kami telah melihat contoh upsert. Pada contoh sebelumnya, kami menetapkan "upsert" : true
saat melakukan updateOne
dan replaceOne
operasi. Itu mengakibatkan dua dokumen dimasukkan, karena koleksi tidak berisi dokumen yang cocok dengan kriteria filternya.
Ini contoh lain dari upser. Kali ini, kita akan menggunakannya di updateOne()
metode.
db.pets.updateOne(
{ name: "Harry" },
{ $set: { type: "Hamster" } },
{ upsert: true }
)
Hasil:
{ "acknowledged" : true, "matchedCount" : 0, "modifiedCount" : 0, "upsertedId" : ObjectId("5fe3dc44d991410169410524") }
Di sini, kami ingin mengatur semua hewan peliharaan bernama Harry menjadi hamster. Tapi tidak ada hewan peliharaan bernama harry, jadi upsert dilakukan.
Metode berikut menerima upsert
parameter:
update()
updateOne()
updateMany()
findAndModify()
findOneAndUpdate()
findOneAndReplace()
Oleh karena itu, ketika upsert: true
ditentukan, metode ini akan melakukan operasi upsert saat mencoba memperbarui dokumen yang tidak ada.