コマンドラインからMongoDBデータベースを削除するにはどうすればよいですか?


回答:


1084

このような:

mongo <dbname> --eval "db.dropDatabase()"

ここでコマンドラインからシェルをスクリプト化することに関する詳細:https : //docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/#scripting


これは私の場合非常に役に立ちました。どういうわけか私は古いインストールから「mean-dev」という名前のデータベースを持っていて、mongoシェルに「mean-dev.dropDatabase()」と入力すると「ReferenceError:平均が定義されていません」という結果になりました。しかし、この回答でソリューションを使用することでうまくいきました。+1
KPマクレガー2014

22
あなたは人間が読める形式の結果を取得したい場合は、それをこのように実行します mongo <dbname> --eval "printjson(db.dropDatabase())"
ドミトロUhnichenko

1
KPマクレガー。あなたがされている必要があります: "use mean-dev" + "db.dropDatabase()"
ozma

ありがとう。これは、あなたがホストとポートをカスタマイズする方法である: mongo <yourDb> --host <yourHost> --port <yourPort> --eval 'db.dropDatabase()'
クレメンス

844

これを行う最良の方法は、mongodbコンソールからです。

> use mydb; 
> db.dropDatabase();

または、mongodデータファイルを停止してデータディレクトリから削除し、再起動することもできます。

ヒント:データファイルをサブフォルダーに移動し、不要になった場合は削除することもできます。


2
彼はプロンプトから直接意味していると思いませんか?その場合は、これらのコマンドを使用して.jsファイルを生成し、「mongo dropdb.js」などを使用してプロンプトから呼び出すか、言うとおりに手動でファイルを削除する必要があります。
Remon van Vliet、2012年

2
ただしuse、.jsファイルではコマンドを使用できないことに注意してください。具体的なDBに接続する必要があります(mongoコマンドにはdbnameを指定します)
Betlista

46
プロのヒント:データベースを削除した後、mongoシェルを終了して~/.dbshellファイルを削除し、コマンド履歴をクリアすることができます。(ことを行うための良い方法があるかもしれません- 。私はよく分からない)SQLとは異なり、モンゴコマンドは、データベースを削除するために、ので、私はこれを行う、実際にドロップするデータベースの名前を参照していない -それはちょうど低下クライアントが現在接続しているデータベース。コマンド履歴をクリアするdropDatabaseと、誤ってコマンドを再生したり、意図せずに2番目のデータベースを削除したりするのを防ぐことができます。
Chris Allen Lane

3
@chrisallenlane、それは賢い考えです。mongodbシェルは、時には非常に危険なツールです... :)
mnemosyn 2013

警告:データベースを削除して同じ名前で新しいデータベースを作成する場合は、すべてのmongosインスタンスを再起動するか、そのデータベースの読み取りまたは書き込みを行う前に、すべてのmongosインスタンスでflushRouterConfigコマンドを使用する必要があります。このアクションにより、mongosインスタンスは、新しいデータベースのプライマリシャードの場所を含むメタデータキャッシュを確実に更新します。そうしないと、mongosが読み取り時にデータを見逃し、間違ったシャードにデータを書き込む可能性があります。
Lekr0

115

私はこれを覚えやすいと思いました:

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 }

113

あなたはヒアドキュメントやevalを必要としないmongo自身が通訳として機能することができます。

#!/usr/bin/env mongo
var db = new Mongo().getDB("someDatabase");
db.dropDatabase();

ファイルを実行可能にして実行します。


3
スクリプト名はで終わる必要があることに注意してください.js。それ以外の場合は、dbアドレスとして解釈されます。
ベガード

1
@ベガード不正解です。あなたは実行してmongo filenameいますが、これは不要です-ファイルにはすでに最上行にインタープリターがあります。ファイルを実行可能にして実行するだけ./filename
mikemaccana

@mikemaccana私は知ってい./filenameますが、実際に実行され/usr/bin/env mongo filenameますよね?そして、でfilename終わらない場合.py、mongoは引数を実行するスクリプトとして認識しません。
Vegard

「実際に./filenameを実行すると、/ usr / bin / env mongo filenameが実行されますよね?」いいえps。の出力を確認してください。
mikemaccana 2017年

@mikemaccanaの出力には、ps呼び出し時に何が実行されているかが示されるだけで、そのポイントに至るps一連のexec呼び出しや、カーネルがファイルをロードして実行するために行った作業は示されません。実際に何が起こっているのかを知りたい場合は、ラッパーを書いて/usr/bin/env、それをシバン行の実行可能ファイルとして設定してから、ですべてを始めてくださいstrace
kbolino 2017年

31

MongoDBを起動する

データベースドロップのコマンドは次のとおりです。

1.まず、削除するデータベースを選択します

use < database name >

2.次に、これを使用します。

db.dropDatabase()

28

「ヒアドキュメント」を使用することもできます。

mongo localhost/db <<EOF
db.dropDatabase()
EOF

次のような出力になります。

mongo localhost/db <<EOF
db.dropDatabase()
EOF
MongoDB shell version: 2.2.2
connecting to: localhost/db
{ "dropped" : "db", "ok" : 1 }    
bye

コマンドのより複雑なシーケンスが必要な場合に備えて、このようなことにはヒアドキュメントを使用するのが好きです。


19

以下は、mongoシェルを使用したmongodbの完全削除操作の一部です。

コレクション内の特定のドキュメント削除するにはdb.mycollection.remove( {name:"stack"} )

コレクション内のすべてのドキュメント削除するにはdb.mycollection.remove()

コレクション削除するにはdb.mycollection.drop()

データベース削除するには:最初にuse mydbコマンドでそのデータベースに移動し、次に

db.dropDatabase()

コマンドプロンプトまたはblashから直接: mongo mydb --eval "db.dropDatabase()




10

別のターミナルウィンドウを開き、次のコマンドを実行します。

mongodb
use mydb
db.dropDatabase()

その操作の出力は次のようになります。

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使用中である、したがって、その時点で任意の入力を挿入し、再度データベースを初期化します。


4

JavaScriptを使用すると、データベースを削除するためのdrop_bad.jsスクリプトを簡単に作成できます。

drop_bad.jsを作成します

use bad;
db.dropDatabase();

ターミナルで1つのコマンドを実行して、mongoシェルを使用してスクリプトを除外します。

mongo < drop_bad.js


2

コマンドプロンプトで、まず次のコマンドを使用してmongodbに接続します。

mongo -h [host-name]:[port:number] -d [dbname] -u [username] -p [password]

でdbにアクセスし<dbname>ます。

次のコマンドを実行して、データベース全体を削除します。

db.dropDatabase()

-hはヘルプ、-dは `mongo --host [host-name]:[port:number] -u [username] -p [password] [dbname] --eval" db.dropDatabase( ) "`
jasenmichael 19/07/14

2

1つのライナーリモートがmongoデータベースからすべてのコレクションを削除します

--hostを使用する必要があります(-hはmongoコマンドのヘルプです)。-dはオプションではありません。パスワードの後に​​dbとコマンドを選択してください。

mongo --host <mongo_host>:<mongo_port> -u <db_user> -p <db_pass> <your_db> --eval "db.dropDatabase()"


0

Pythonを使用してMongoDBデータベースをドロップします。

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")

-1

dbは現在のデータベース名タイプを表示します:。db.dropDatabase();

1 - 'を使用してドロップするデータベースを選択し、使用します 'キーワードを。

2-次にdb.dropDatabase();と入力します。


-2

mongoシェルから次のコマンドを使用して、dbを削除します

使用する ; db.dropDatabase();


このコマンドはどのデータベースを削除するかをどのように指定しますか?私が試し「のauth-ユーザー」と呼ばれるデータベースを持つ> use auth-users ; db.dropDatabase()> use auth-users; db.dropDatabase()の両方が返さ[thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name :
ミスター・ケネディ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.