MongoDB Atlas:不允许用户在 system.indexes 上执行查找操作

MongoDB Atlas: user is not allowed to do action find on system.indexes

我正在使用 MongoDB Atlas,最近我的 MongoDB 副本开始出现此错误:

user is not allowed to do action [find] on [mydb.system.indexes]

什么都没有真正改变,所以我想知道可能是什么问题。用户在 mydb 上具有 readWrite 角色,从 docs 看来它应该有权这样做。另外,我尝试将用户更改为具有任何权限的管理员用户,但仍然出现此错误。有趣的是 system 集合在 mydb 中不存在,但是 Spring 数据试图查询它并得到这个错误。

这是来自 mongo 的完整日志:

Error: error: {
    "ok" : 0,
    "errmsg" : "user is not allowed to do action [find] on [mydb.system.indexes]",
    "code" : 8000,
    "codeName" : "AtlasError"
}

MongoDB 连接 URI 如下所示:

spring.data.mongodb.uri=mongodb+srv://[USER]:[PASSWORD]@[MONGO_URL].mongodb.net/mydb

我正在使用 Spring Boot 2.0.1.RELEASE 和 mongo java 版本 3.6.3 的驱动程序。 Mongo 副本的版本是 3.4.14。知道发生了什么以及如何解决这个问题吗?升级用户角色在这里没有帮助。

MongoDB Atlas 禁止直接调用某些 system. 集合,他们在 the doc and db.<COLLECTION>.getIndexes() should be used instead. In my case MongoBee library was making system.indexes call and causing the issue. See my answer 中指定了更多详细信息。