我在admin.system.users中有一个用户:
{
"_id" : "admin.reports",
"user" : "reports",
"db" : "admin",
"credentials" : {
"MONGODB-CR" : "hash"
},
"roles" : [
{
"role" : "read",
"db" : "mydb"
}
]
}
我试图从bash脚本执行此操作:
mongo --quiet mongodb.production.internal/admin -ureports -p"password" <<< "
var conn = connect('localhost/mydb');
db.auth('reports', 'password');
db.Collection.aggregate([
{
\$group: {
_id: '\$itemId',
count: { \$sum: 1 }
}
},
{
\$sort: {
count: 1
}
}
], {cursor: {}}).forEach(function(line) {
print(line._id+','+line.count);
});
"
我从mongodb实例获得此响应:
not authorized on admin to execute command { aggregate:
(除了其他非常详细但毫无意义的输出)。
我需要什么权限才能为此用户启用聚合命令?如果没有启用写访问权限,是否可以完成?
答案 0 :(得分:0)
问题不在于权限,read
确实已足够,但正确切换到正确的数据库。
我正在使用connect()
静默(无输出)切换到工作数据库,因为use
命令会抛出输出。这是不正确的,解决方法是在命令行上指定连接的方式,即:
mongo --quiet mongodb.production.internal/mydb --authenticationDatabase admin -ureports -p"password"