我是mongo的新手,正在管理admin serverStatus。对我来说,当我期望有一个对象时,它总是返回false。我正在启用身份验证的情况下运行mongod。是否需要特定的用户权限?除了nodejs驱动程序或mongodb手册中的API文档所提供的内容外,我找不到其他文档。

MonogDB 3.4
NodeJS驱动程序2.2

var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://user:pass@localhost:27017/test?authMechanism=DEFAULT&authSource=test', function(err, db) {
  var adminDB = db.admin();
  adminDB.serverStatus(function(err, status) {
    console.log(status);
    db.close();
  });
});


谢谢!

最佳答案

我找到了答案。对于启用了身份验证的数据库,您需要使用serverStatus操作将角色授予执行用户。

db.createRole(
   {
     role: "mongostatRole",
     privileges: [
       { resource: { cluster: true }, actions: [ "serverStatus" ] }
     ],
     roles: []
   }
)

09-17 16:26