Saya sedang melakukan pengembangan di MongoDB. Untuk tujuan yang sama sekali tidak jahat, kadang-kadang saya ingin membuang segala sesuatu dalam basis data — yaitu, untuk menghapus setiap koleksi, dan apa pun yang ada di sekitar, dan mulai dari awal. Apakah ada satu baris kode yang akan membiarkan saya melakukan ini? Poin bonus untuk memberikan metode konsol MongoDB dan metode driver MongoDB Ruby.
454
db.dropAllUsers();
Juga, dari baris perintah:
sumber
Saya memiliki masalah yang sama, ketika saya perlu mengatur ulang semua koleksi tetapi tidak ingin kehilangan pengguna basis data. Gunakan baris kode berikut, jika Anda ingin menyimpan konfigurasi pengguna untuk database:
Kode ini akan melewati semua nama koleksi dari satu database dan menjatuhkan yang tidak dimulai dengan "sistem.".
sumber
remove
menggantikannyadrop
. Theremove
pilihan muncul untuk mempertahankan kendala pada bidang koleksi yang Anda kliring. Ketika kami menggunakandrop
metode ini,unique
kendala pada salah satu bidang kami tidak dihormati setelah jatuhnya.else
cabang (keif (c.indexOf("system.") == -1)
) yang tidakremove
bukandrop
. Dengan begitu, Anda tidak lagi memiliki koleksi kosong jika tidak menggunakannya lagidb[c]
, gunakandb.getCollection(c)
yang menghindari kesalahan ketika nama koleksi adalah digit .db.getCollectionNames().forEach(function(c) { if (c.indexOf("system.") == -1) db.getCollection(c).drop(); })
Saya mengikuti
db.dropDatabase()
rute untuk waktu yang lama, namun jika Anda mencoba menggunakan ini untuk menghapus database di sela-sela kasus pengujian, Anda mungkin pada akhirnya akan menemukan masalah dengan kendala indeks yang tidak dihargai setelah penurunan database. Akibatnya, Anda harus mengotak-atikIndeksIndeks, atau rute yang lebih sederhana akan menghindari dropDatabase sama sekali dan hanya menghapus dari setiap koleksi dalam satu lingkaran seperti:Dalam kasus saya, saya menjalankan ini dari command-line menggunakan:
sumber
db[collection_name].drop()
dan itu menunjukkan masalah yang sama seperti yang Anda jelaskan dengandb.dropDatabase()
metode ini. Menggantis/drop/remove/
bekerja dengan sangat baik!remove()
itu tidak berfungsi dengan baik pada MongoDB untuk Windows, dan sebaliknya saya perlu melakukanremove({})
yang bekerja pada OSX dan Windows.Dengan mengkompilasi jawaban dari @Robse dan @DanH (kudos!), Saya mendapatkan solusi berikut yang sepenuhnya memuaskan saya:
Hubungkan ke database Anda, jalankan kodenya.
Itu membersihkan database dengan menjatuhkan koleksi pengguna dan mengosongkan koleksi sistem.
sumber
Dengar beberapa menggunakan operasi hapus penuh untuk mongodb menggunakan mongo shell
Untuk menghapus dokumen tertentu dalam koleksi:
db.mycollection.remove( {name:"stack"} )
Untuk menghapus semua dokumen dalam koleksi:
db.mycollection.remove()
Untuk menghapus koleksi:
db.mycollection.drop()
untuk menghapus database: pertama pergi ke database itu dengan
use mydb
perintah dan kemudiansumber
Menggunakan
sumber
kalau-kalau Anda harus menghapus semuanya sekaligus: (jatuhkan semua basis data sekaligus)
sumber
sumber
jika Anda ingin menghapus hanya database dan sub-koleksi gunakan ini:
use <database name>;
db.dropDatabase();
jika Anda ingin menghapus semua database di mongo maka gunakan ini:
sumber
Cara termudah untuk menghapus database katakanlah blog:
sumber
Untuk pengembang Meteor.
Buka jendela terminal kedua saat menjalankan aplikasi Anda
localhost:3000
.Dalam menjalankan folder proyek Anda
meteor mongo
,.coolName = new Mongo.Collection('yourCollectionName');
Maka cukup masukkan
db.yourCollectionName.drop();
Anda akan secara otomatis melihat perubahan di server lokal Anda.
Untuk semua orang.
db.yourCollectionName.drop();
sumber
Semoga itu bisa membantu
sumber
saya lebih memilih
lebih
Jika koleksi Anda adalah koleksi khusus yaitu koleksi tertutup atau koleksi dengan satu bidang ditandai sebagai unik, menjatuhkan akan menghapus koleksi itu sendiri dan ketika koleksi dibuat lagi itu akan menjadi koleksi biasa. Anda harus mendefinisikan properti lagi. Jadi gunakan
remove()
untuk menghapus dokumen tanpa menghapus koleksi dan memengaruhi perilaku koleksi.sumber
drop()
itu hampir instan danremove({})
mengunci db Anda selama beberapa menit atau puluhan menit (tergantung pada ukuran koleksi).Untuk menghapus semua DB gunakan:
sumber
Dokumentasi MongoDB db.dropDatabase () yang menjelaskan modifikasi yang diperkenalkan pada 2.6:
sumber
Di MongoDB 3.2 dan yang lebih baru,
Mongo().getDBNames()
dimongo
shell akan menampilkan daftar nama database di server:Sebuah
forEach()
loop di atas array kemudian dapat memanggildropDatabase()
untuk menjatuhkan semua database yang terdaftar. Secara opsional, Anda dapat memilih untuk melewati beberapa database penting yang tidak ingin Anda hapus. Sebagai contoh:Contoh dijalankan:
sumber