在管理员信任的情况下,是否可以通过MongoDB的官方Go驱动程序(mgo)在mongo shell外部运行mongo shell命令,例如db.stats()
,rs.status()
和db.serverStatus()
?
答案 0 :(得分:13)
这当然是可能的,但首先你需要记住,你列出的“命令”实际上是shell助手。您需要获取他们所代表的真实命令才能通过mgo
Session.Run运行它们。
有几种方法可以做到这一点,第一种方法是在shell中运行db.listCommands()
并找到合适的方法。执行此操作的第二种方法是运行您希望在没有括号的情况下模拟的帮助程序。例如:
> rs.status
function () { return db._adminCommand("replSetGetStatus"); }
正如您所看到的,帮助程序实际执行的操作是对replSetGetStatus
数据库运行admin
命令。同样,您会发现db.stats()
实际运行dbstats
命令。 db.serverStatus()
助手是您列出的三个中唯一一个可以按原样运行的助手。
这是一个运行所有三个的一个非常简单的例子 - 我展示了两种形式的调用,一个只传递一个字符串,一个更通用的选项传递给完整的命令文档 - 我在测试{{1}上运行它没有auth,所以你必须自己添加这个部分来测试一个启用auth的实例:
mongod
答案 1 :(得分:-3)