Bisakah Anda mengganti nama koleksi di mongodb?

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
userInformation

Sekarang 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 mongo2

Perilaku

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

Bisakah Anda mengubah nama koleksi di MongoDB?

Koleksi Shard . 0, Anda dapat menggunakan perintah renameCollection untuk mengubah nama koleksi sharded .

Bagaimana cara mengganti nama koleksi?

metode renameCollection() digunakan untuk mengganti nama koleksi. Nama baru koleksi. Lampirkan string dalam tanda kutip. Jika benar, mongod menghapus target renameCollection sebelum mengganti nama koleksi.

Bagaimana cara menggunakan ganti nama di MongoDB?

Anda dapat menggunakan metode berikut untuk mengganti nama bidang di MongoDB. .
Metode 1. Ganti nama Satu Bidang db. koleksi. updateMany({}, {$rename. {"lapangan lama". "BidangBaru"}}, salah, benar)
Metode 2. Ganti nama Banyak Bidang db. koleksi. updateMany({}, {$rename. {"tua1". "baru1", "lama2". "baru2"}}, salah, benar)

Bagaimana Anda mengganti nama koleksi di MongoDB menggunakan Python?

Fungsi PyMongo rename() digunakan untuk mengganti nama koleksi. Operasi ganti nama gagal jika nama baru bukan turunan dari string dasar atau merupakan nama koleksi yang tidak valid. Parameter. nama baru. Nama baru koleksi.