Bunu bash istemimden yapmanın en kolay yolu nedir?
Bunu bash istemimden yapmanın en kolay yolu nedir?
Yanıtlar:
Bunun gibi:
mongo <dbname> --eval "db.dropDatabase()"
Kabuğu komut satırından komut dosyası yazma hakkında daha fazla bilgi için: 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()'
Bunu yapmanın en iyi yolu mongodb konsolundan:
> use mydb;
> db.dropDatabase();
Alternatif olarak, mongod
veri dizininizdeki veri dosyalarını durdurabilir ve silebilir, sonra yeniden başlatabilirsiniz.
İpucu: Ayrıca veri dosyalarını bir alt klasöre taşıyabilir ve artık ihtiyacınız olmadığından eminseniz silebilirsiniz.
use
.js dosyasında komut kullanamayacağınızı unutmayın, beton DB'ye bağlanmanız gerekir (mongo komutu için dbname belirtin)
~/.dbshell
komut geçmişinizi temizlemek için dosyanızı silmek isteyebilirsiniz . (Bunu yapmanın daha iyi bir yolu olabilir - emin değilim.) Bunu yapıyorum çünkü SQL'den farklı olarak, bir veritabanını düşürmek için mongo komutu aslında veritabanının adını bırakmak için başvurmuyor - sadece istemcinin bağlı olduğu veritabanı. Komut geçmişinizi temizlemek, yanlışlıkla dropDatabase
komutu tekrar oynatmanızı ve istemeden ikinci bir veritabanını düşürmenizi önler .
Bunu hatırlaması kolay buldum:
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 }
Yorumlu metinlere veya değerlendirmeye gerek yoktur , mongo
kendisi bir tercüman olarak hareket edebilir.
#!/usr/bin/env mongo
var db = new Mongo().getDB("someDatabase");
db.dropDatabase();
Dosyayı yürütülebilir yapın ve çalıştırın.
.js
, aksi takdirde db adresi olarak yorumlanacağını unutmayın.
mongo filename
Gereksiz çalıştırıyorsunuz - dosyanın üst satırında zaten bir tercüman var. Sadece dosyayı yürütülebilir yapın ve çalıştırın./filename
./filename
aslında çalışacak /usr/bin/env mongo filename
değil mi? Ve eğer bu yüzden filename
de bitmiyor .py
, Mongo çalıştırmak için komut dosyası olarak argüman tanımaz.
ps
. Çıkışını kontrol edin .
ps
size yalnızca çağırdığınız sırada neyin çalıştığını gösterir ps
, exec
o noktaya götüren çağrılar zincirini ya da çekirdeğin dosyayı yüklemek ve yürütmek için yaptığı işi değil. Gerçekten neler olup bittiğini bilmek istiyorsanız, etrafına bir sarıcı yazmalı, bunu /usr/bin/env
shebang satırındaki yürütülebilir dosya olarak ayarlamalı ve sonra her şeyi başlamalısınız strace
.
MongoDB'yi başlat
Veritabanı bırakma komutu:
1. önce silmek istediğiniz veritabanını seçin
use < database name >
2. Sonra bunu kullanın ..
db.dropDatabase()
Ayrıca bir "heredoc" da kullanabilirsiniz:
mongo localhost/db <<EOF
db.dropDatabase()
EOF
Çıktı sonuçları şöyle:
mongo localhost/db <<EOF
db.dropDatabase()
EOF
MongoDB shell version: 2.2.2
connecting to: localhost/db
{ "dropped" : "db", "ok" : 1 }
bye
Daha karmaşık komut dizisi istemeniz durumunda, buedocs'u böyle şeyler için kullanmayı seviyorum.
Diğer yol:
echo "db.dropDatabase()" | mongo <database name>
İşte bazı mongo kabuğu kullanarak mongodb için tam silme işlemleri kullanın
Koleksiyonlardaki belirli bir belgeyi silmek için :db.mycollection.remove( {name:"stack"} )
Koleksiyonlardaki tüm belgeleri silmek için : db.mycollection.remove()
Koleksiyonu silmek için : db.mycollection.drop()
için silme veritabanı : İlk o veritabanı gidip use mydb
sonra komuta ve
db.dropDatabase()
doğrudan komut isteminden veya kesintiden: mongo mydb --eval "db.dropDatabase()
Bir terminalde yürütün:
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.
Başka bir terminal penceresi açın ve aşağıdaki komutları yürütün,
mongodb
use mydb
db.dropDatabase()
Bu operasyonun çıktısı aşağıdaki gibi olacaktır
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 }
>
mydb
Hâlâ kullanımda olduğunu ve dolayısıyla herhangi bir girdinin eklenmesinin veritabanını yeniden başlatacağını lütfen unutmayın .
Javascript kullanarak , veritabanınızı bırakmak için kolayca bir drop_bad.js komut dosyası oluşturabilirsiniz :
oluşturmak drop_bad.js :
use bad;
db.dropDatabase();
Daha sonra, mongo kabuğunu kullanarak komut dosyasını incelemek için terminalde 1 komutunu çalıştırın:
mongo < drop_bad.js
Her ne kadar çeşitli yöntemler olsa da, en iyi yol (en verimli ve en kolay) kullanmaktır db.dropDatabase()
Komut isteminde, önce aşağıdaki komutu kullanarak mongodb'a bağlanın:
mongo -h [host-name]:[port:number] -d [dbname] -u [username] -p [password]
ile db'ye erişiyor olacaksınız <dbname>
.
Tüm veritabanını bırakmak için aşağıdaki komutu çalıştırın:
db.dropDatabase()
bir liner uzaktan tüm koleksiyonları mongo veritabanından kaldırmak
not --host kullanmalı, (-h mongo komutu için yardım) ve -d bir seçenek değil, db'yi ve paroladan sonra komutu seç.
mongo --host <mongo_host>:<mongo_port> -u <db_user> -p <db_pass> <your_db> --eval "db.dropDatabase()"
MongoDB komut satırınıza giriş yapın: Ve aşağıdaki komutları yazın. "YOUR_DATABASE_NAME" kullanın; db.dropDatabase ();
Python kullanarak bir MongoDB veritabanı bırakın:
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")
db'yi bırakmak için mongo kabuğundan aşağıdaki komutu kullanın
kullanım; db.dropDatabase ();
> use auth-users ; db.dropDatabase()
ve > use auth-users; db.dropDatabase()
hem iade[thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name :