出于测试目的,我正在docker容器中运行mongodb(v.4.0.9)。我希望能够运行一个npm脚本来删除数据库,以便能够将其他备份还原到数据库中。
关于mongodb tutorial在终端上执行类似的操作,这是可能的,但我没有任何成功。 db容器公开了端口27016。
"drop: mongo localhost:27016/databaseToDrop --eval db.dropDatabase()"
实际上,应该删除数据库,就像记录的here一样。
没有错误消息或类似的消息出现,也没有删除数据库。
有什么建议吗?谢谢。
答案 0 :(得分:0)
您必须使用getSiblingDB
才能使用--eval
在另一个数据库上运行命令。以下npm脚本对我有用:
{
"name": "docker-npm-mongo",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"docker-start": "docker start some-mongo || docker run --name some-mongo -d mongo:latest",
"docker-create-db": "docker exec some-mongo mongo --eval db.getSiblingDB('mydb').user.insert({'name':'test'})",
"docker-drop-db": "docker exec some-mongo mongo --eval db.getSiblingDB('mydb').dropDatabase();"
},
"author": "",
"license": "ISC"
}
使用这些npm命令创建数据库
npm run docker-start
npm run docker-create-db
然后您可以通过执行以下操作来检查您的数据库是否存在
docker exec -ti some-mongo mongo
> show dbs
完成后,可以通过执行
删除数据库npm run docker-drop-db
您必须使用此命令手动删除Docker容器。另外,这也可以作为单独的命令作为npm脚本的一部分。
docker rm -f some-mongo