2012-01-13 105 views
748

从我的bash提示符下执行此操作的最简单方法是什么?如何从命令行删除MongoDB数据库?

+5

看到这个问题:http://stackoverflow.com/questions/3366397/delete-everything-in-a-mongodb-database。从mongo shell执行它真的很容易。 – 2012-01-13 21:16:04

+0

这个链接可能会帮助你http://www.codefari.com/2015/03/drop-database-in-mongodb.html – Singh 2016-07-06 17:58:59

回答

958

像这样:

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

在命令行此脚本壳更多信息:https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/#scripting

+0

这对我的情况非常有帮助。不知何故,我有一个名为“mean-dev”的数据库来自旧版本的安装,并在mongo shell中输入“mean-dev.dropDatabase()”导致“ReferenceError:mean is not defined”。但在这个答案中使用解决方案做了诀窍。 +1 – 2014-08-26 01:15:09

+18

如果你想得到一个人类可读的结果,可以这样做: '''mongo --eval“printjson(db.dropDatabase())”''' – 2014-09-07 11:23:39

+1

K. P. MacGregor。你应该是:“使用mean-dev”+“db.dropDatabase()” – ozma 2016-02-23 15:14:14

781

做的是从MongoDB的控制台的最佳方式:

> use mydb; 
> db.dropDatabase(); 

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

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

+2

我想他的意思是直接从提示符不是他?在这种情况下,您必须使用这些命令生成一个.js文件,并使用“mongo dropdb.js”或其他方法从提示中调用该文件,或者按照您的说法进行操作并手动删除这些文件。 – 2012-01-13 21:18:45

+0

不是矿山先生;) – 2012-01-13 21:58:42

+2

但请注意,您不能在.js文件中使用'use'命令,您必须连接到具体的数据库(为mongo命令指定dbname) – Betlista 2012-11-29 08:34:31

26

你也使用 “定界符”:

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 

我喜欢在这种情况下使用heredocs,以防你想要更复杂的命令序列。

17

其他方式:

echo "db.dropDatabase()" | mongo <database name> 
+0

这一个与流星蒙牛DBs – 2014-08-07 20:29:16

96

这是一个有点冗长,但我认为它是安全的:

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 } 
16

执行在终端:

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. 
+0

相同的答案[这一个](http://stackoverflow.com/questions/8857276/how- do-i-drop-a-mongodb-database-from-the-line-line/18997305#18997305),这是在一个月前提供的。 – 2016-09-09 18:50:32

17

下面是一些使用全使用mongo shell删除mongodb的操作

删除特定文件于类别:db.mycollection.remove({name:"stack"})

删除所有文件于类别:db.mycollection.remove()

删除收集db.mycollection.drop()

删除数据库: 第一次去通过use mydb命令到该数据库,然后

db.dropDatabase() 

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

104

你不需要here文档或EVALmongo本身可以充当翻译。

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

使文件可执行并运行它。

+1

请注意,脚本名称必须以'.js'结尾,否则它将被解释为数据库地址。 – Vegard 2017-01-02 14:52:21

+0

@Vegard这是不正确的。您正在运行'mongo filename',这是不必要的 - 该文件的第一行中已经有一个解释器。只要使文件可执行并运行'./filename' – mikemaccana 2017-01-04 10:39:28

+0

@mikemaccana我知道,但'./file'实际上会运行'/ usr/bin/env mongo filename',对吧?因此,如果'filename'不以'.py'结尾,mongo将不会将该参数识别为要运行的脚本。 – Vegard 2017-01-04 11:00:15

28

启动MongoDB的

命令数据库中删除是:

首先选择要删除

use < database name > 

2.然后使用这个数据库..

db.dropDatabase() 
-1

在你命令提示,首先连接使用下面的命令的MongoDB:

  • 蒙戈-h [主机名]:[端口:号] -d为[dbname] -u [用户名] -p [口令]

你将会访问db。

运行以下命令以删除整个数据库:

  • db.dropDatabase()
-3

的dropDatabase命令丢弃当前数据库,删除相关联的数据文件。有两种方法可以在MongoDB中删除数据库。首先,如果您想从MongoDB中删除数据库天气。要删除数据库,首先要做的就是使用使用命令切换到数据库,并给出如下的drop命令。

使用天气

db.runCommand({dropDatabaase:1})

其次,蒙戈壳还提供了辅助方法db.dropDatabase()。步骤与上述相同。

使用天气

db.dropDatabase()

如果您想了解更多内容,请看看 http://docs.mongodb.org/manual/reference/command/dropDatabase/

4

使用JavaScript,您可以轻松创建一个drop_bad.js脚本丢弃您的数据库:

创建drop_bad。JS

use bad; 
db.dropDatabase(); 

比终端运行1个命令使用蒙戈外壳exectue脚本:

mongo < drop_bad.js 
3

Eventhough有几种方法,最好的方法(最有效的和最简单的)是利用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仍然在使用,因此将在那个时候任何输入将重新初始化数据库。