Mongo 来自 unix shell 和不同数据库的命令

Mongo command from unix shell with different database

我可以使用此命令连接到 mongo 服务器:

mongo host:port/admin --username=user --password=pass

然后我得到一个 mongo shell,我可以在其中执行任何类型的 mongo 命令 我切换到开发数据库(使用开发)。

我想从 unix shell / 命令行执行 mongo 命令 在开发数据库上,但我只能访问管理员。

我该怎么做?如何指定我想使用的数据库?

如果你只想执行一个命令,你可以这样做:

mongo server:22021/my_dbname --eval "printjson(db.serverStatus())"

如果你想执行多个命令,比如驻留在一个名为 command.js 的文件中,你可以这样做:

mongo server:22021/my_dbname --quiet commands.js

如果你想要纯 shell 脚本 (SQL) 风格,那么你可以这样做:

function testMongoScript {
    mongo server:22021/my_dbname <<EOF
       use mydb
       db.leads.findOne()
       db.leads.find().count()
    EOF
}

更多详情,您也可以参考here

您可以使用输出重定向到 运行 您需要的任何命令:

mongo localhost:27017 <<< $'rs.slaveOk()\nshow dbs'

echo $'rs.slaveOk()\nshow dbs' | mongo localhost:27017

记住命令之间的 \n

使用 --authenticationDatabase 对您的用户所在的数据库进行身份验证,即使您连接到不同的数据库也是如此:

mongo localhost:27017/dev -u user -p **** --authenticationDatabase admin

当然,您将无法在 dev 数据库中执行您的用户无权执行的任何操作。