我搜索了一半的互联网,但没有发现db.eval()
,或者什么也没有找到过时的解决方案。因此,我的问题。
我有一些使用mongo驱动程序3.5.0的代码:
MongoDatabase db = mongoClient.getDatabase 'mydb'
println db.runCommand( new BasicDBObject( eval:'db.version()' ) )
线程“ main”中的异常com.mongodb.MongoCommandException:命令失败,错误13:“未在mydb上授权执行命令{eval:“ db.version()”,$ readPreference:{模式:“ secondaryPreferred”} ,$ db:“ mydb”}'在服务器localhost:27017上。完整的响应为{“ ok”:0.0,“ errmsg”:“未经mydb授权执行命令{eval:\” db.version()\“,$ readPreference:{mode:\” secondaryPreferred \“}},$ db:\“ mydb \”}“,”代码“:13,” codeName“:”未经授权“} 在com.mongodb.connection.ProtocolHelper.getCommandFailureException(ProtocolHelper.java:115) 在com.mongodb.connection.CommandProtocol.execute(CommandProtocol.java:107)上
我可以在shell中运行以下命令:
mongo "mongodb://admin:admin@somehost:27003/mydb?replicaSet=myset" -eval 'db.version()'
输出
3.6.6
如果我从外壳内部运行命令:
db.runCommand( { 'eval':'db.version()' } )
我也得到
{ “ operationTime”:时间戳(1536931496,11), “ ok”:0, “ errmsg”:“未授权mydb执行命令{eval:\” db.version()\“,$ db:\” mydb \“}”, “代码”:13 “ codeName”:“未经授权” }
与我联系的用户如下:
{
"_id" : "mydb.admin",
"user" : "admin",
"db" : "mydb",
"roles" : [
{
"role" : "readWrite",
"db" : "mydb"
},
{
"role" : "dbAdmin",
"db" : "mydb"
},
{
"role" : "userAdmin",
"db" : "mydb"
},
{
"role" : "dbOwner",
"db" : "mydb"
}
]
}
我想念什么?
我需要eval
的特殊特权吗?