开启mongodb数据库命令行_如何从命令行删除MongoDB数据库?

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

看到这个问题:stackoverflow.com/questions/3366397/…。 从mongo shell做起来真的很容易。

这个链接可以帮助您codefari.com/2015/03/drop-database-in-mongodb.html

像这样:

mongo --eval"db.dropDatabase()"

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

这在我的案例中非常有用。不知怎的,我有一个来自旧安装的名为"mean-dev"的数据库,并且在mongo shell中输入"mean-dev.dropDatabase()"导致"ReferenceError:mean is not defined"。但是在这个答案中使用解决方案就可以了。 +1

如果您想获得人类可读的结果,请按以下方式执行:mongo --eval"printjson(db.dropDatabase())"

K. P. MacGregor。你应该是:"使用mean-dev"+"db.dropDatabase()"

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

> use mydb;

> db.dropDatabase();

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

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

我觉得他的意思是直接来自提示不是吗?在这种情况下,您必须使用这些命令生成.js文件,并使用"mongo dropdb.js"或其他内容从提示中调用它,或按照您的说法执行并手动删除文件。

但请注意,您不能在.js文件中使用use命令,您必须连接到具体的DB(为mongo命令指定dbname)

专业提示:删除数据库后,您可能希望退出mongo shell并删除~/.dbshell文件以清除命令历史记录。 (可能有更好的方法 - 我不)我这样做是因为,与SQL不同,删除数据库的mongo命令实际上并没有引用要删除的数据库的名称 - 它只是丢弃了客户端当前连接的数据库。清除命令历史记录将阻止您意外重放dropDatabase命令并无意中删除第二个数据库。

这是一个聪明的主意,@ chrisallenlane。 mongodb shell有时是一个非常危险的工具...... :)

警告:如果删除数据库并创建具有相同名称的新数据库,则必须重新启动所有mongos实例,或者在读取或写入该数据库之前对所有mongos实例使用flushRouterConfig命令。此操作可确保mongos实例刷新其元数据缓存,包括新数据库的主分片的位置。否则,mongos可能会错过有关读取的数据,并可能将数据写入错误的分片。

您不需要heredocs或eval,mongo本身可以充当解释器。

#!/usr/bin/env mongo

var db = new Mongo().getDB("someDatabase");

db.dropDatabase();

使文件可执行并运行它。

请注意,脚本名称必须以.js结尾,否则将被解释为db地址。

@Vegard这不对。你正在运行mongo filename这是不必要的 - 该文件已经在顶行有一个解释器。只需使文件可执行并运行它./filename

@mikemaccana我知道,但是./filename实际上会运行/usr/bin/env mongo filename,对吗?因此,如果filename不以.py结尾,mongo将不会将该参数识别为要运行的脚本。

"做./filename实际上会运行/ usr / bin / env mongo filename,对吧?"不。检查ps的输出。

@mikemaccana ps的输出只显示调用ps时正在运行的内容,而不是显示导致该点的exec调用链,以及内核加载和执行文件所做的工作。如果你想知道真正发生了什么,你应该使用在/usr/bin/env周围写一个包装器,将其设置为shebang行中的可执行文件,然后用strace将整个事件踢掉。

@Vegard是正确的(除了它需要.js而不是.py)并且如果您的文件名不以.js结尾它将失败

@kbolino ack re strace或systemtap优于ps时间点,但Vegard声明这将尝试运行/usr/bin/env mongo filename,因此文件必须以.py结尾,这可能是不正确的。

@mikemaccana只是因为它应该是.js - 内核将执行相当于/usr/bin/env mongo filename的操作,这最终会导致对路径上某些mongo的mongo filename调用,这意味着文件名将被视为数据库名称,而不是要执行的脚本,除非它以.js结尾,每个文档(并且文档在这一点上是准确的,至少为3.x)

@mikemaccana无论实际执行什么,文件名以.js结尾的需求都是可测试的(同样,至少在3.x上)。创建一个名为foo的脚本,复制并粘贴答案的确切内容chmod +x foo,然后运行./foo。它将失败,失败消息将包含connecting to: mongodb://./foo。将文件名更改为foo.js,它可以正常工作。

@kbolino解释器由Unix / Linux而不是Mongo处理,答案已经过测试。除非Mongo本身现在是一个python解释器而不是Mongo 3中的JS解释器,否则结果不应该改变。

@mikemaccana它与Python无关(这只是很多评论前的错字)。文件名必须以.js结尾,否则Mongo根本不会解释它,因为它将参数视为要使用的数据库的名称,而不是要执行的脚本。

@kbolino重复:解释器由Unix / Linux而不是Mongo处理。同样重复:尝试一下。

@mikemaccana一年前,我曾用3.0.5尝试过它。我刚用3.4.6再试一次。一年没有任何改变。文件名必须以.js结尾。我已经发布了确定问题的确切步骤。我恭敬地请求你尝试我所做的并亲自看看。

为了绝对清晰,这里有一系列shell命令来演示这个问题:pastebin.com/Tpt474te

mongo / shell / shell_options.cpp:400显示了参数解析逻辑以及为什么需要.js;但是,它也表明解决这个问题的另一种方法是使shebang行#!/usr/bin/env mongo --nodb - 然后你可以使用你喜欢的任何文件扩展名(或根本没有)

我发现这很容易记住:

mongo //to start the mongodb shell

show dbs //to list existing databases

use //the is the database you'd like to drop

db //should show just to be sure I'm working with the right database

db.dropDatabase() //will delete the database & return {"dropped" :"","ok" : 1 }

启动MongoDB

数据库删除命令是:

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

use < database name >

然后用这个..

db.dropDatabase()

你也可以使用"heredoc":

mongo localhost/db <

db.dropDatabase()

EOF

输出结果如下:

mongo localhost/db <

db.dropDatabase()

EOF

MongoDB shell version: 2.2.2

connecting to: localhost/db

{"dropped" :"db","ok" : 1 }

bye

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

另一种方式:

echo"db.dropDatabase()" | mongo

这个适用于Meteor Mongo DB

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

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

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

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

删除数据库:

首先通过use mydb命令转到该数据库然后

db.dropDatabase()

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

在终端执行:

mongo // To go to shell

show databases // To show all existing databases.

use // To switch to the wanted database.

db.dropDatabase() // To remove the current database.

与一个月前提供的答案相同。

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

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仍在使用中,因此此时插入任何输入将再次初始化数据库。

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

创建drop_bad.js:

use bad;

db.dropDatabase();

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

mongo < drop_bad.js

虽然有几种方法,但最好的方法(最有效和最简单)是使用db.dropDatabase()

在命令提示符中,首先使用以下命令连接到mongodb:

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

您将使用访问db。

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

db.dropDatabase()

-h是帮助,-d不是更像`mongo --host [host-name]的选项:[port:number] -u [username] -p [password] [dbname] --eval"db.dropDatabase( )"`

one liner remote从mongo数据库中删除所有集合

注意必须使用--host,(-h是mongo命令的帮助),而-d不是选项,请在密码后选择db和命令。

mongo --host : -u -p --eval"db.dropDatabase()"

登录到您的mongoDB命令行:

然后键入以下命令。

使用"YOUR_DATABASE_NAME";

db.dropDatabase();

使用mongo shell中的以下命令来删除db

use ;

db.dropDatabase();

该命令如何指定要删除的数据库?使用名为"auth-users"的数据库,我尝试了> use auth-users ; db.dropDatabase()和> use auth-users; db.dropDatabase(),并且都返回了[thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name :

这对已发布的其他答案没有任何补充。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值