MongoDB Atlas:不允许用户对 system.indexes 进行操作查找

Yur*_*kov 4 mongodb mongo-java spring-data-mongodb mongo-java-driver mongodb-atlas

我正在使用 MongoDB Atlas,最近我开始在我的 MongoDB 副本上收到此错误:

不允许用户对 [mydb.system.indexes] 执行操作 [find]

什么都没有真正改变,所以我想知道可能是什么问题。用户在文档中拥有readWrite角色,看起来它应该有权这样做。另外,我尝试将用户更改为具有任何权限的管理员用户,但仍然出现此错误。有趣的是,集合不存在于但 Spring Data 尝试查询它并收到此错误。mydbsystemmydb

这是来自 mongo 的完整日志:

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

MongoDB 连接 URI 如下所示:

spring.data.mongodb.uri=mongodb+srv://[USER]:[PASSWORD]@[MONGO_URL].mongodb.net/mydb
Run Code Online (Sandbox Code Playgroud)

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

Yur*_*kov 8

MongoDB Atlas 禁止直接调用某些system.集合,并且它们在文档中指定并db.<COLLECTION>.getIndexes()应改为使用。在我的情况下,MongoBee库正在system.indexes拨打电话并导致问题。有关更多详细信息,请在此处查看我的答案。