在shell监控脚本中,通常需要以非交互的方式连接到数据库实例查询一些信息,例如MySQL的mysql -e就非常方便,但是对于MongoDB来说,并不能直接在登陆命令后加上查询命令来直接执行,例如
mongo --port 27017 "rs.status()"
MongoDB shell version: 3.0.6
connecting to: 127.0.0.1:27017/rs.status()
2019-12-12T15:05:18.412+0800 E QUERY Error: [rs.status()] is not a valid database name
at Mongo.getDB (src/mongo/shell/mongo.js:41:12)
at connect (src/mongo/shell/mongo.js:181:49)
at (connect):1:6 at src/mongo/shell/mongo.js:41
exception: connect failed
而可行的方法,是如下:
echo “rs.status”|mongo --port 27017
或指定库名
echo “rs.status”|mongo 127.0.0.1:27017/sam
echo "db.currentOp()"|mongo --port 27017
MongoDB shell version: 3.0.6
connecting to: 127.0.0.1:27017/test
{
"inprog" : [
{
"desc" : "conn533824",
"threadId" : "47714426115840",
"connectionId" : 533824,
"client" : "