MongoDB:未在数据库上授权执行命令eval

MongoDB:未在数据库上授权执行命令eval,mongodb,mongodb-query,database-administration,rbac,Mongodb,Mongodb Query,Database Administration,Rbac,这是我正在运行的查询: db.surveyquestion.copyTo('surveyquestionV2') 我得到的错误是: { "message" : "MongoError: not authorized on GenericSurveyTool to execute command { $eval: function (collName, newName) {\r" + "var from = db[collName];\r" +

这是我正在运行的查询:

db.surveyquestion.copyTo('surveyquestionV2')
我得到的错误是:

{
    "message" : "MongoError: not authorized on GenericSurveyTool to execute command { $eval: function (collName, newName) {\r" +
              "var from = db[collName];\r" +
              "..., args: [ 'surveyquestion', 'surveyquestionV2' ], $db: 'GenericSurveyTool' }",
    "stack" : "script:1:19",
    "code" : 13
}
用于运行此查询的admin db中的我的用户:

query:  db.getUsers();


/* 2 */
{
    "_id" : "admin.moiz",
    "user" : "moiz",
    "db" : "admin",
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}

此用户具有root角色,但仍无法复制集合。请帮忙

对于有相同问题的人,解决方案在
db.eval()
的文档中:

如果启用了授权,您必须有权访问所有资源上的所有操作才能运行eval。不建议提供此类访问,但如果您的组织要求用户运行eval,请创建一个角色,授予对任何资源的任何操作。不要将此角色分配给任何其他用户


对于有相同问题的人,解决方案在
db.eval()的文档中:

如果启用了授权,您必须有权访问所有资源上的所有操作才能运行eval。不建议提供此类访问,但如果您的组织要求用户运行eval,请创建一个角色,授予对任何资源的任何操作。不要将此角色分配给任何其他用户


尝试使用
dbOwner
而不是在角色阵列中使用root。这不起作用,同样的问题仍然存在。请确定,在启动查询之前,您是否以moiz身份进行了身份验证?是的,这是肯定的。我刚才在db.eval()命令的文档中看到:
如果启用了授权,为了运行eval,您必须有权访问所有资源上的所有操作。不建议提供此类访问,但如果您的组织要求用户运行eval,请创建一个角色,授予对任何资源的任何操作。不要将此角色分配给任何其他用户。
尝试使用
dbOwner
而不是角色数组中的root。这不起作用,同样的问题仍然存在。请确定,您是否在启动查询之前验证为moiz?是的,这是肯定的。我刚才在db.eval()命令的文档中看到:
如果启用了授权,为了运行eval,您必须有权访问所有资源上的所有操作。不建议提供此类访问,但如果您的组织要求用户运行eval,请创建一个角色,授予对任何资源的任何操作。不要将此角色分配给任何其他用户。
除了文档中的引用之外,这里没有什么内容,所以我真的不确定它是否应该是一个答案。响应中最大的问题是,它没有强调
eval
实际上已经弃用,应该从MongoDB中完全删除,因此任何人编写当前代码都是不明智的,因为他们的代码将停止工作,这实际上在文档中有详细说明。正如其他各种警告一样,这些警告应该放在任何回应的最前面。这里除了引用文档中的一段话之外,真的没有什么,所以我真的不确定它是否应该是一个答案。响应中最大的问题是,它没有强调
eval
实际上已经弃用,应该从MongoDB中完全删除,因此任何人编写当前代码都是不明智的,因为他们的代码将停止工作,这实际上在文档中有详细说明。正如其他各种警告一样,这些警告确实应该放在任何回应的前列。