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

Posted

技术标签:

【中文标题】如何从命令行删除 MongoDB 数据库?【英文标题】:How do I drop a MongoDB database from the command line? 【发布时间】:2012-02-10 01:15:15 【问题描述】:

从我的 bash 提示符中执行此操作的最简单方法是什么?

【问题讨论】:

看到这个问题:***.com/questions/3366397/…。在 mongo shell 中很容易做到。 【参考方案1】:

像这样:

mongo <dbname> --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 &lt;dbname&gt; --eval "printjson(db.dropDatabase())" K. P.麦格雷戈。你应该是:“use mean-dev”+“db.dropDatabase()” 谢谢。这是您可以自定义主机和端口的方式:mongo &lt;yourDb&gt; --host &lt;yourHost&gt; --port &lt;yourPort&gt; --eval 'db.dropDatabase()'【参考方案2】:

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

> use mydb; 
> db.dropDatabase();

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

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

【讨论】:

我认为他的意思是直接从提示开始,不是吗?在这种情况下,您要么必须使用这些命令生成一个 .js 文件,然后使用“mongo dropdb.js”或其他方式从提示中调用它,要么按照您所说的操作并手动删除文件。 但请注意,您不能在 .js 文件中使用 use 命令,您必须连接到具体的数据库(为 mongo 命令指定 dbname) 专业提示:删除数据库后,您可能希望退出 mongo shell 并删除 ~/.dbshell 文件以清除命令历史记录。 (可能有更好的方法 - 我不确定。)我这样做是因为,与 SQL 不同,用于删除数据库的 mongo 命令实际上并不引用要删除的数据库的名称 i> - 它只是删除客户端当前连接的数据库。清除命令历史记录将防止您意外重播 dropDatabase 命令并无意中删除第二个数据库。 这是一个聪明的主意,@chrisallenlane。 mongodb shell 有时是一个相当危险的工具...... :) 警告: 如果删除数据库并创建具有相同名称的新数据库,则必须重新启动所有 mongos 实例,或者在之前对所有 mongos 实例使用 flushRouterConfig 命令读取或写入该数据库。此操作可确保 mongos 实例刷新其元数据缓存,包括新数据库的主分片的位置。否则,mongos 可能会丢失读取数据并将数据写入错误的分片。【参考方案3】:

我发现这很容易记住:

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 

【讨论】:

【参考方案4】:

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

#!/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 文件名,对吗?"不。检查ps的输出。 @mikemaccana ps 的输出仅显示您调用 ps 时正在运行的内容,而不是导致该点的 exec 调用链或内核已完成的工作加载和执行文件。如果你想知道到底发生了什么,你应该使用在/usr/bin/env 周围写一个包装器,将其设置为shebang 行中的可执行文件,然后使用strace 启动整个过程。【参考方案5】:

启动 MongoDB

数据库删除命令是:

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

use < database name >

2.然后用这个..

db.dropDatabase()

【讨论】:

【参考方案6】:

你也可以使用“heredoc”:

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 用于此类事情,以防您需要更复杂的命令序列。

【讨论】:

【参考方案7】:

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

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

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

删除收藏db.mycollection.drop()

删除数据库: 首先通过use mydb 命令访问该数据库,然后

db.dropDatabase()

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

【讨论】:

【参考方案8】:

其他方式:

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

【讨论】:

【参考方案9】:

在终端中执行:

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.

【讨论】:

与一个月前给出的this one 相同的答案。【参考方案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仍在使用中,因此此时插入任何输入都会再次初始化数据库。

【讨论】:

【参考方案11】:

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

创建 drop_bad.js

use bad;
db.dropDatabase();

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

mongo < drop_bad.js

【讨论】:

【参考方案12】:

打开终端并输入:

mongo 

下面的命令应该显示列出的数据库:

show dbs 

/* the <dbname> is the database you'd like to drop */
use <dbname> 

/* the below command will delete the database */
db.dropDatabase()  

以下应该是终端中的输出:


  "dropped": "<dbname>",
  "ok": 1

【讨论】:

【参考方案13】:

尽管有多种方法,但最好的方法(最有效和最简单)是使用db.dropDatabase()

【讨论】:

【参考方案14】:

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

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

您将使用&lt;dbname&gt; 访问数据库。

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

db.dropDatabase()

【讨论】:

-h 是帮助,-d 不是一个更像`mongo --host [host-name]:[port:number] -u [username] -p [password] [dbname] 的选项--eval "db.dropDatabase()" `【参考方案15】:

一个班轮远程从 mongo 数据库中删除所有集合

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

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

【讨论】:

【参考方案16】:

很惊讶我们还没有看到这种变化。这最大限度地减少了命令行上的额外参数,并明确显示数据库被切换到FOO,然后被删除:

$ mongo --host "mongodb://machine:port" --eval 'db.getSiblingDB("FOO").dropDatabase();'

【讨论】:

【参考方案17】:

登录到您的 mongoDB 命令行: 并键入以下命令。 使用“YOUR_DATABASE_NAME”; db.dropDatabase();

【讨论】:

【参考方案18】:

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

【讨论】:

【参考方案19】:

db 将显示当前数据库名称 类型:db.dropDatabase();

1- 使用 'use' 关键字选择要删除的数据库。

2- 然后输入 db.dropDatabase();

【讨论】:

【参考方案20】:

使用以下命令从 mongo shell 删除 db

use <database name>; 
db.dropDatabase();

【讨论】:

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

以上是关于如何从命令行删除 MongoDB 数据库?的主要内容,如果未能解决你的问题,请参考以下文章

Mongodb:删除指定数目的行

如何在 MongoDB 中删除或删除集合?

Mongodb命令行导入导出数据

4.MongoDB命令行

从数据框中删除行的命令[重复]

mongodb 命令行用啥命令查询Collection文档结构