【问题标题】:Execute javascript on mongo command line with Authorization使用授权在 mongo 命令行上执行 javascript
【发布时间】:2026-01-20 03:05:03
【问题描述】:

我已经成功地从 mongo shell 执行了 javascripts 我们现在已经在 mongo 数据库上启用了授权 已授予权限,如果我登录到 shell 并执行查询,一切都很好

但是,我正在尝试从命令行执行 javascript,但遇到了问题

我正在发出命令 mongo -u -p -authenticationDatabase admin GetProcessDate.js

我收到错误消息

MongoDB shell version: 2.6.5
connecting to: test
2014-10-15T06:44:11.451-0700 error: { "$err" : "not authorized for query on bvmaster.ProcessDate", "code" : 13 } at src/mongo/shell/query.js:131
failed to load: GetProcessDate.js

当我禁用授权时,这个 javascript 执行得很好

mongo GetProcessDate.js

当我启用授权并登录到 shell 时,一切正常

mongo -u <user>-p <password> -authenticationDatabase admin

javascript很简单

mongo = new Mongo();
bvmasternew = mongo.getDB( "bvmaster" );

ProcessDateCursor = bvmasternew.ProcessDate.find();
ProcessDateRec = ProcessDateCursor.next();
print( ProcessDateRec.Date);

任何帮助将不胜感激!

【问题讨论】:

    标签: javascript mongodb shell command-line authorization


    【解决方案1】:

    经过大量搜索,我发现了以下内容; 当您在 mongo 命令行上执行 javascript 时,您在命令行上传递的参数并不重要 在你的 mongo javascript 里面 您需要使用适当的参数调用 mongo

    mongo = new Mongo( server:port );
    admin = mongo.getDB( "admin" );
    admin.auth( User, Password );
    

    这些行基本上授权用户在您使用服务器/端口组合连接的那个mongo实例中执行各种操作

    【讨论】: