我可以使用此命令连接到mongo服务器:
mongo host:port / admin --username = user --password = pass
我得到一个mongo shell,我可以在其后执行任何类型的mongo命令 我切换到dev db(使用dev)。
我想从unix shell /命令行执行mongo命令 在dev数据库上,但我只能访问admin。
我该怎么做?如何指定我想使用的数据库?
答案 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
数据库中执行任何操作。