Apa cara termudah untuk melakukan ini dari bash prompt saya?
Apa cara termudah untuk melakukan ini dari bash prompt saya?
Jawaban:
Seperti ini:
mongo <dbname> --eval "db.dropDatabase()"
Info lebih lanjut tentang skrip shell dari baris perintah di sini: https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/#scripting
mongo <dbname> --eval "printjson(db.dropDatabase())"
mongo <yourDb> --host <yourHost> --port <yourPort> --eval 'db.dropDatabase()'
Cara terbaik untuk melakukannya adalah dari konsol mongodb:
> use mydb;
> db.dropDatabase();
Atau, Anda dapat menghentikan mongod
dan menghapus file data dari direktori data Anda, kemudian restart.
Petunjuk: Anda juga dapat memindahkan file data ke subfolder, dan menghapusnya jika Anda yakin tidak lagi membutuhkannya.
use
perintah dalam file .js, Anda harus terhubung ke DB konkret (tentukan dbname untuk perintah mongo)
~/.dbshell
file Anda untuk menghapus riwayat perintah Anda. (Mungkin ada cara yang lebih baik untuk melakukan itu - saya tidak yakin.) Saya melakukan ini karena, tidak seperti dengan SQL, perintah mongo untuk menjatuhkan database sebenarnya tidak merujuk nama database yang akan dihapus - itu hanya menjatuhkan basis data dimana klien saat ini terhubung. Menghapus riwayat perintah Anda akan mencegah Anda secara tidak sengaja memutar ulang dropDatabase
perintah dan secara tidak sengaja menjatuhkan database kedua.
Saya menemukan ini mudah diingat:
mongo //to start the mongodb shell
show dbs //to list existing databases
use <dbname> //the <dbname> is the database you'd like to drop
db //should show <dbname> just to be sure I'm working with the right database
db.dropDatabase() //will delete the database & return { "dropped" : "<dbname>", "ok" : 1 }
Anda tidak perlu heredocs atau eval , mongo
itu sendiri dapat bertindak sebagai penerjemah.
#!/usr/bin/env mongo
var db = new Mongo().getDB("someDatabase");
db.dropDatabase();
Buat file tersebut dapat dieksekusi dan jalankan.
.js
, jika tidak maka akan ditafsirkan sebagai alamat db.
mongo filename
yang tidak perlu - file sudah memiliki juru bahasa di baris paling atas. ./filename
./filename
akan benar-benar berjalan /usr/bin/env mongo filename
, bukan? Dan jika filename
tidak berakhir .py
, mongo tidak akan mengenali argumen sebagai skrip untuk dijalankan.
ps
.
ps
hanya menunjukkan kepada Anda apa yang berjalan pada saat Anda memohon ps
, bukan rantai exec
panggilan yang mengarah ke titik itu atau pekerjaan yang telah dilakukan kernel untuk memuat dan mengeksekusi file. Jika Anda ingin tahu apa yang sebenarnya terjadi, Anda harus menggunakan write a wrapper around /usr/bin/env
, atur itu sebagai executable di baris shebang, dan kemudian mulai semuanya strace
.
Anda juga bisa menggunakan "heredoc":
mongo localhost/db <<EOF
db.dropDatabase()
EOF
Hasil dalam output seperti:
mongo localhost/db <<EOF
db.dropDatabase()
EOF
MongoDB shell version: 2.2.2
connecting to: localhost/db
{ "dropped" : "db", "ok" : 1 }
bye
Saya suka menggunakan heredocs untuk hal-hal seperti ini, jika Anda ingin urutan perintah yang lebih kompleks.
Berikut adalah beberapa penggunaan 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 kemudian
db.dropDatabase()
langsung dari command prompt atau blash: mongo mydb --eval "db.dropDatabase()
Cara lain:
echo "db.dropDatabase()" | mongo <database name>
Jalankan di terminal:
mongo // To go to shell
show databases // To show all existing databases.
use <DATA_BASE> // To switch to the wanted database.
db.dropDatabase() // To remove the current database.
Buka jendela terminal lain dan jalankan perintah berikut,
mongodb
use mydb
db.dropDatabase()
Output dari operasi itu akan terlihat seperti berikut
MAC:FOLDER USER$ mongodb
> show databases
local 0.78125GB
mydb 0.23012GB
test 0.23012GB
> use mydb
switched to db mydb
>db.dropDatabase()
{ "dropped" : "mydb", "ok" : 1 }
>
Harap dicatat bahwa mydb
masih digunakan, maka memasukkan input apa pun pada saat itu akan menginisialisasi kembali basis data.
Walaupun ada beberapa metode, Cara terbaik (paling efisien dan termudah) adalah menggunakan db.dropDatabase()
Di prompt perintah Anda, Pertama hubungkan ke mongodb menggunakan perintah berikut:
mongo -h [host-name]:[port:number] -d [dbname] -u [username] -p [password]
Anda akan mengakses db dengan <dbname>
.
Jalankan perintah berikut untuk menjatuhkan seluruh database:
db.dropDatabase()
one liner remote menghapus semua koleksi dari database mongo
note harus menggunakan --host, (-h adalah bantuan untuk perintah mongo), dan -d bukan opsi, pilih db dan perintah setelah kata sandi.
mongo --host <mongo_host>:<mongo_port> -u <db_user> -p <db_pass> <your_db> --eval "db.dropDatabase()"
Masuk ke baris perintah mongoDB Anda: Dan ketikkan perintah di bawah ini. gunakan "YOUR_DATABASE_NAME"; db.dropDatabase ();
Jatuhkan database MongoDB menggunakan python:
import argparse
import pymongo
if __name__ == "__main__":
"""
Drop a Database.
"""
parser = argparse.ArgumentParser()
parser.add_argument("--host", default='mongodb://localhost:27017',
help="mongodb URI [default: %(default)s]")
parser.add_argument("--database", default=None,
help="database name: %(default)s]")
args = parser.parse_args()
client = pymongo.MongoClient(host=args.host)
if args.database in client.list_database_names():
client.drop_database(args.database)
print(f"Dropped: '{args.database}'")
else:
print(f"Database '{args.database}' does not exist")
gunakan perintah berikut dari mongo shell untuk menjatuhkan db
gunakan; db.dropDatabase ();
> use auth-users ; db.dropDatabase()
dan > use auth-users; db.dropDatabase()
dan keduanya kembali[thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name :