如何在Spring Boot中通过MongoTemplate获取Mongo副本集成员状态?
解决Spring Boot中MongoTemplate执行replSetGetStatus的未授权问题
错误提示已经明确说明:replSetGetStatus命令必须在admin数据库上执行,而你当前代码里mongoTemplate.getDb()获取的是配置文件中指定的业务数据库,所以触发了未授权错误。
直接切换到admin数据库执行命令即可,代码示例:
// 从MongoTemplate获取MongoClient实例 MongoClient mongoClient = mongoTemplate.getMongoClient(); // 切换至admin数据库 MongoDatabase adminDb = mongoClient.getDatabase("admin"); // 构造并执行replSetGetStatus命令 Bson replSetStatusCmd = new BasicDBObject("replSetGetStatus", 1); Document statusResult = adminDb.runCommand(replSetStatusCmd); // 按需处理结果,比如转为字符串 String statusStr = statusResult.toString();
额外注意:确保你的MongoDB账号拥有执行该命令的权限,通常需要分配clusterMonitor角色(该角色包含查看副本集状态的权限)。
内容的提问来源于stack exchange,提问作者Kaushik Mahadevan
相关产品推荐
相关产品推荐

