NPM 命令删除 mongo 数据库,使用 "echo" 无效

NPM command to drop mongo database, using "echo" not working

我正在尝试创建一个 npm 命令来从我的 mongo 实例中删除一个数据库。

当我将这行代码直接粘贴到我的 shell 时,它起作用了,并给出了以下输出:

> echo 'db.dropDatabase()' | mongo musicappdb

MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017/musicappdb
MongoDB server version: 3.4.10
{ "ok" : 1 }
bye

但是当我从我的 npm 脚本中 运行 它时,它是这样定义的

scripts: {
     ...
     "drop-db": "echo 'db.dropDatabase()' | mongo musicappdb",
     ...
  },

我明白了

> echo "db.dropDatabase()" | mongo musicappdb

MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017/musicappdb
MongoDB server version: 3.4.10
db.dropDatabase()
bye

并且数据库没有被删除。

为什么当我通过 npm 发出命令时,命令无法正常运行?

嘿,看看这篇文章可能会有帮助:

http://antrikshy.com/blog/run-mongodb-automatically-nodejs-project

刚刚测试:

'start mongo admin --eval "db.dropDatebase()" '

这对我有用:

"drop-db": "echo db.dropDatabase() | mongo musicappdb"

没有单引号。

它不适用于双引号或单引号。这是在 Windows 10.

"drop-db": "echo 'db.dropDatabase()' | mongo myDB"

这对我有用

输出为

MongoDB shell version v4.0.9
connecting to: mongodb://127.0.0.1:27017/myDB?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("44d9deb8-6de1-49ff-8532-24cf2ae5247b") }
MongoDB server version: 4.0.9
{ "ok" : 1 }
bye

如果有人正在使用 Docker 容器:

docker exec -it mongodb_container sh -c "mongo db_name --eval 'db.dropDatabase()'"