Pada artikel ini, kita akan melihat sintaks untuk mengganti nama koleksi dan contoh untuk mengganti nama koleksi di MongoDB
Apa yang terjadi saat mengganti nama koleksi di MongoDB?
db. koleksi. renameCollection() memperoleh kunci eksklusif pada koleksi tertentu selama durasi operasi. Semua operasi selanjutnya pada koleksi harus menunggu hingga db. koleksi. renameCollection() melepaskan kunci
Sintaks untuk mengganti nama koleksi di MongoDB
db.collection.renameCollection(target, dropTarget)
Contoh untuk mengganti nama koleksi di MongoDB
Buat koleksi
db.products.update( { _id: 1 }, { $set: { item: "apple" }, $setOnInsert: { dateAdded: new Date() } }, { upsert: true } )
_Operasi di bawah ini akan mengganti nama koleksi "produk" untuk direkam. Jika nama target (mis. e. product) adalah nama koleksi yang ada, maka operasi akan gagal
Untuk memahami sintaks di atas, mari kita buat daftar semua koleksi dari sampel basis data. Permintaannya adalah sebagai berikut -
> use sample; switched to db sample > show collections;Berikut ini adalah outputnya −
copyThisCollectionToSampleDatabaseDemo deleteDocuments deleteDocumentsDemo employee informationAboutDelete internalArraySizeDemo prettyDemo selectWhereInDemo sourceCollection updateInformation userInformationSekarang ubah nama koleksi 'informationAboutDelete' menjadi 'deleteSomeInformation'. Permintaannya adalah sebagai berikut untuk mengubah nama koleksi
Halaman ini mendokumentasikan metode shell, dan tidak merujuk ke MongoDB Node. js driver (atau driver lain) metode. Untuk API driver MongoDB yang sesuai, lihat dokumentasi driver MongoDB spesifik Anda
Mengganti nama koleksi. Menyediakan pembungkus untuk
ParameterTypeDescriptiontargetstringNama baru koleksi. Lampirkan string dalam tanda kutip. Lihat. dropTargetbooleanOpsional. Jika true, jatuhkan target sebelum mengganti nama koleksi. Nilai defaultnya adalah mongo2Perilaku
Metode beroperasi dalam koleksi dengan mengubah metadata yang terkait dengan koleksi yang diberikan
Lihat dokumentasi untuk peringatan dan pesan tambahan
Peringatan
Metode dan perintah akan membatalkan kursor terbuka yang menyela kueri yang saat ini mengembalikan data
Untuk Ubah Aliran , metode dan perintah membuat untuk semua Ubah Aliran opened on the source or target collection.
- Metode ini memiliki keterbatasan berikut
- tidak dapat memindahkan koleksi antar database. Gunakan untuk operasi ganti nama ini
- tidak didukung pada koleksi yang di-sharded
- Anda tidak dapat mengganti nama tampilan .
Penguncian Sumber Daya
Berubah di versi 4. 2
memperoleh kunci eksklusif pada koleksi sumber dan target selama durasi operasi. Semua operasi selanjutnya pada koleksi harus menunggu hingga selesai. Sebelum MongoDB 4. 2, mengganti nama koleksi dalam database yang sama dengan persyaratan mendapatkan kunci database eksklusif
Interaksi dengan db.collection.5
A dimulai dengan gagal jika masalah klien selama proses dump. Lihat untuk informasi lebih lanjut
Contoh
Panggil metode pada objek koleksi. Sebagai contoh
salinan
db.rrecord.renameCollection("record") _
Operasi ini akan mengganti nama koleksi renameCollection_1 menjadi renameCollection2. Jika nama target (mis. e. renameCollection2) adalah nama koleksi yang ada, maka operasi akan gagal
← db. koleksi. hapus() db. koleksi. replaceOne() →
© MongoDB, Inc 2008-sekarang. MongoDB, Mongo, dan logo daun adalah merek dagang terdaftar dari MongoDB, Inc
Metode pembantu nyaman bagi pengguna, tetapi mungkin tidak mengembalikan tingkat informasi yang sama seperti perintah basis data. Dalam kasus di mana kenyamanan tidak diperlukan atau bidang pengembalian tambahan diperlukan, gunakan perintah database
Mengeluarkan perintah terhadap
Sintaksis
Perintah tersebut memiliki sintaks berikut
db.runCommand( { renameCollection: "<source_namespace>", to: "<target_namespace>", dropTarget: <true|false>, writeConcern: <document>, comment: <any> })
Bidang Perintah
Perintah tersebut berisi bidang-bidang berikut
Bidang
Jenis
Keterangan
renameCollection
rangkaian
Koleksi yang akan diganti namanya. Namespace adalah kombinasi dari nama database dan nama koleksi
db.adminCommand( { renameCollection: "test.orders", to: "test.orders2014" } )_1
rangkaian
Namespace baru dari koleksi. Jika namespace baru menentukan database yang berbeda, perintah akan menyalin koleksi ke database baru dan melepaskan koleksi sumber. Lihat
db.adminCommand( { renameCollection: "test.orders", to: "test.orders2014" } )_3
boolean
Opsional. Jika db.adminCommand( { renameCollection: "test.orders", to: "test.orders2014" } )_4, akan membatalkan db.adminCommand( { renameCollection: "test.orders", to: "test.orders2014" } )6 sebelum mengganti nama koleksi. Nilai defaultnya adalah db.adminCommand( { renameCollection: "test.orders", to: "test.orders2014" } )8
db.adminCommand( { renameCollection: "test.orders", to: "test.orders2014" } )_9
dokumen
Opsional. Sebuah dokumen yang mengungkapkan keprihatinan menulis untuk operasi. Abaikan untuk menggunakan masalah penulisan default Saat dikeluarkan pada klaster yang dipecah, ubah perhatian tulis dari perintah dan pembantunya menjadi
use testdb.orders.renameCollection( "orders2014" )4
setiap
Opsional Komentar yang disediakan pengguna untuk dilampirkan ke perintah ini. Setelah disetel, komentar ini muncul di samping rekaman perintah ini di lokasi berikut , di bidang use testdb.orders.renameCollection( "orders2014" )_5 keluaran, di lapangan keluaran, di lapangan Komentar dapat berupa apa saja yang valid (string, integer, objek, array, dll) Baru di versi 4. 4
Perilaku
Koleksi Pecahan
Mulai di MongoDB 5. 0, Anda dapat menggunakan perintah untuk mengubah nama koleksi sharded. Database target harus sama dengan database sumber
Koleksi yang Tidak Terpecahkan
Anda dapat menggunakan untuk mengganti nama koleksi yang tidak di-shard di cluster yang di-shard selama database sumber dan target berada di shard utama yang sama
Koleksi Deret Waktu
Anda tidak dapat menggunakan untuk mengganti nama koleksi deret waktu. Untuk informasi lebih lanjut, lihat
Koleksi Target yang Ada
gagal jika db.adminCommand( { renameCollection: "test.orders", to: "test.orders2014" } )_6 adalah nama koleksi yang ada dan Anda tidak menentukan renameCollection4
Pertunjukan
Berubah di versi 3. 6
memiliki implikasi kinerja yang berbeda tergantung pada target
Jika database target sama dengan database sumber, cukup ubah namespace. Ini adalah operasi cepat
Jika database target berbeda dari database sumber, salin semua dokumen dari koleksi sumber ke koleksi target. Bergantung pada ukuran koleksi, ini mungkin membutuhkan waktu lebih lama untuk diselesaikan
Penguncian Sumber Daya di Cluster Terpecahkan
Berubah di versi 5. 0
Saat mengganti nama koleksi sharded atau unsharded di kluster sharded, koleksi sumber dan target dikunci secara eksklusif di setiap shard. Operasi selanjutnya pada koleksi sumber dan target harus menunggu hingga operasi penggantian nama selesai
Untuk informasi lebih lanjut tentang mengunci di MongoDB, lihat FAQ. Konkurensi
Penguncian Sumber Daya di Kumpulan Replika
Berubah di versi 4. 2
Jika mengganti nama koleksi dalam database yang sama, dapatkan kunci eksklusif pada koleksi sumber dan target selama durasi operasi. Semua operasi selanjutnya pada koleksi harus menunggu hingga selesai
Sebelum MongoDB 4. 2, mengganti nama koleksi dalam database yang sama dengan memerlukan kunci database eksklusif
Jika mengganti nama koleksi antara database yang berbeda, perilaku penguncian bergantung pada versi MongoDB
Untuk MongoDB 4. 2. 2 dan yang lebih baru, mendapatkan kunci eksklusif (W) pada database target, kunci bersama (r) maksud pada database sumber, dan kunci (S) bersama pada kumpulan sumber. Operasi selanjutnya pada database target harus menunggu hingga melepaskan kunci database eksklusif
Untuk MongoDB 4. 2. 1 dan sebelumnya, memperoleh kunci global eksklusif (W). Operasi selanjutnya harus menunggu hingga melepaskan kunci global
Untuk informasi lebih lanjut tentang mengunci di MongoDB, lihat FAQ. Konkurensi
renameCollection7 Basis data
Anda tidak dapat mengganti nama koleksi dari database yang direplikasi ke database renameCollection7, yang tidak direplikasi
Anda tidak dapat mengganti nama koleksi dari database renameCollection7, yang tidak direplikasi, ke database yang direplikasi
Buka Kursor
Peringatan
Metode dan perintah akan membatalkan kursor terbuka yang menyela kueri yang saat ini mengembalikan data
Ubah Arus
Untuk Change Streams, metode dan perintah buat untuk setiap Change Streams yang sudah ada yang dibuka di kumpulan sumber atau target
Interaksi dengan <database>.<collection>_4
A dimulai dengan gagal jika klien mengeluarkan perintah selama proses dump. Lihat untuk informasi lebih lanjut
Contoh
Contoh berikut mengganti nama koleksi bernama <database>.<collection>9 di database mongosh0 menjadi mongosh1 di database mongosh0
db.adminCommand( { renameCollection: "test.orders", to: "test.orders2014" } )_
menyediakan pembantu untuk perintah untuk mengganti nama koleksi dalam database yang sama. Berikut ini setara dengan contoh sebelumnya