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

时间:2015-02-05 13:50:39

标签: bash mongodb shell

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

  

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

我得到一个mongo shell,我可以在其后执行任何类型的mongo命令 我切换到dev db(使用dev)。

我想从unix shell /命令行执行mongo命令 在dev数据库上,但我只能访问admin。

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

3 个答案:

答案 0 :(得分:1)

如果您只想执行一个命令,可以使用以下命令执行:

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

答案 1 :(得分:1)

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

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

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

只需记住命令之间的\n

答案 2 :(得分:0)

使用--authenticationDatabase对用户所在的数据库进行身份验证,即使您要连接到其他数据库:

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

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