如何从命令行删除MongoDB数据库?

cof*_*der 831 mongodb

从我的bash提示符中最简单的方法是什么?

Tim*_*ier 1059

像这样:

mongo <dbname> --eval "db.dropDatabase()"
Run Code Online (Sandbox Code Playgroud)

有关从命令行编写shell脚本的更多信息,请访问:https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/#scripting

  • 如果你想得到一个人类可读的结果,就这样做:```mongo <dbname> --eval"printjson(db.dropDatabase())"``` (21认同)

mne*_*syn 835

最好的方法是从mongodb控制台:

> use mydb; 
> db.dropDatabase();
Run Code Online (Sandbox Code Playgroud)

或者,您可以mongod从数据目录中停止和删除数据文件,然后重新启动.

提示:您还可以将数据文件移动到子文件夹,如果您确定不再需要它们,则将其删除.

  • 专业提示:删除数据库后,您可能希望退出mongo shell并删除`〜/ .dbshel​​l`文件以清除命令历史记录.(可能有更好的方法 - 我不确定.)我这样做是因为,与SQL不同,删除数据库的mongo命令_does实际上并没有引用数据库的名称drop_ - 它只是删除了客户端当前连接的数据库.清除命令历史记录将防止您意外重放`dropDatabase`命令并无意中删除第二个数据库. (46认同)
  • 这是一个聪明的主意,@ chrisallenlane.mongodb shell有时是一个非常危险的工具...... :) (3认同)
  • 我觉得他的意思是直接来自提示不是吗?在这种情况下,你要么必须产生这些命令的.js文件并使用提示"蒙戈dropdb.js"什么调用它还是像你说的和手动删除这些文件. (2认同)
  • 但请注意,您不能在.js文件中使用`use`命令,您必须连接到具体的DB(为mongo命令指定dbname) (2认同)

Ale*_*ban 113

我发现这很容易记住:

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 }
Run Code Online (Sandbox Code Playgroud)


mik*_*ana 113

你不需要heredocs或eval,mongo它本身可以充当翻译.

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

使文件可执行并运行它.

  • 请注意,脚本名称必须以`.js`结尾,否则将被解释为db地址. (2认同)
  • @Vegard 那是不正确的。您正在运行“mongo filename”,这是不必要的 - 该文件在第一行已经有一个解释器。只需使文件可执行并运行它 `./filename` (2认同)

小智 31

启动MongoDB

数据库删除命令是:

1.首先选择要删除的数据库

use < database name >
Run Code Online (Sandbox Code Playgroud)

2.然后用这个..

db.dropDatabase()
Run Code Online (Sandbox Code Playgroud)


小智 28

你也可以使用"heredoc":

mongo localhost/db <<EOF
db.dropDatabase()
EOF
Run Code Online (Sandbox Code Playgroud)

输出结果如下:

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

我喜欢使用heredocs来做这样的事情,以防你需要更复杂的命令序列.


小智 18

另一种方式:

echo "db.dropDatabase()" | mongo <database name>
Run Code Online (Sandbox Code Playgroud)


bhv*_*bhv 18

这里有一些使用mongo shell的mongodb的完全删除操作

删除集合中的特定文档:db.mycollection.remove( {name:"stack"} )

删除集合中的所有文档: db.mycollection.remove()

删除集合: db.mycollection.drop()

删除数据库:先去该数据库由use mydb命令,然后

db.dropDatabase()
Run Code Online (Sandbox Code Playgroud)

直接从命令提示符或blash: mongo mydb --eval "db.dropDatabase()


小智 15

在终端执行:

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.
Run Code Online (Sandbox Code Playgroud)


hel*_*ode 10

打开另一个终端窗口并执行以下命令,

mongodb
use mydb
db.dropDatabase()
Run Code Online (Sandbox Code Playgroud)

该操作的输出应如下所示

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 }
>
Run Code Online (Sandbox Code Playgroud)

请注意,mydb它仍在使用中,因此当时插入任何输入将再次初始化数据库.


ser*_*iuz 5

使用 Javascript,您可以轻松创建drop_bad.js脚本来删除数据库:

创建drop_bad.js

use bad;
db.dropDatabase();
Run Code Online (Sandbox Code Playgroud)

比在终端中运行 1 个命令来使用 mongo shell 执行脚本:

mongo < drop_bad.js
Run Code Online (Sandbox Code Playgroud)