java - 在 MongoDB Java 中运行脚本命令/文件

标签 java mongodb groovy

我搜索了半个互联网,但没有找到任何内容,或者发现 db.eval() 的解决方案已经过时。因此我的问题。

我有一些使用 mongo 驱动程序 3.5.0 的代码:

MongoDatabase db = mongoClient.getDatabase 'mydb'
println db.runCommand( new BasicDBObject( eval:'db.version()' ) )

Exception in thread "main" com.mongodb.MongoCommandException: Command failed with error 13: 'not authorized on mydb to execute command { eval: "db.version()", $readPreference: { mode: "secondaryPreferred" }, $db: "mydb" }' on server localhost:27017. The full response is { "ok" : 0.0, "errmsg" : "not authorized on mydb to execute command { eval: \"db.version()\", $readPreference: { mode: \"secondaryPreferred\" }, $db: \"mydb\" }", "code" : 13, "codeName" : "Unauthorized" } at com.mongodb.connection.ProtocolHelper.getCommandFailureException(ProtocolHelper.java:115) at com.mongodb.connection.CommandProtocol.execute(CommandProtocol.java:107)

我可以在 shell 中运行此命令:

mongo "mongodb://admin:admin@somehost:27003/mydb?replicaSet=myset" -eval 'db.version()'

输出

3.6.6

如果我从 shell 内部运行命令:

db.runCommand( { 'eval':'db.version()' } )

我也有

{ "operationTime" : Timestamp(1536931496, 11), "ok" : 0, "errmsg" : "not authorized on mydb to execute command { eval: \"db.version()\", $db: \"mydb\" }", "code" : 13, "codeName" : "Unauthorized" }

我正在连接的用户如下所示:

{
    "_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 的特殊权限吗?

最佳答案

根据 mongodb 文档,您需要一个授予 anyAction 的角色上AnyResource .

关于java - 在 MongoDB Java 中运行脚本命令/文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52333056/

相关文章:

grails - 即使使用显式刷新,也无法让 GORM mongodb 插件保存新记录

java - eclipse 错误?私有(private)字段的 Java/Groovy 可见性

具有私有(private)构造函数的 Java Spring bean

mongodb - 是否有一个查询可以连接深层子列表?

node.js - 如何在 Mongoose 中保存对象数组

java - 在 Grails 3 项目中为 xml bean 配置依赖注入(inject)

grails - Spock 在接口(interface)中未显示的动态方法上抛出 MissingMethodException

java - 什么是可以在Eclipse中创建GUI的最佳且免费的Visual Editor?

java - 单击搜索小部件时 Intent 进行下一个 Activity

java - 将字符串转换为 Spring 框架中的 URL 表示形式