MongoDB - 如何向用户添加findandmodify权限

时间:2015-06-22 07:06:34

标签: mongodb express mongoose

在我的应用程序中,我使用MongoDB作为数据库,使用Express + Mongoose来处理代码。我已将用户添加到数据库并为用户提供readWrite角色,现在我可以从数据库中获取数据。但是当我尝试使用save中的Express + Mongoose函数插入集合时,我收到以下错误消息,但我找不到如何向用户添加findandmodify权限。 / p>

 {"name":"MongoError",
   "ok":0,
   "errmsg":"not authorized on od-database to execute  command { findandmodify: \"identitycounters\", 
   query: {
      field: \"id\",  
      model: \"Products\" },
   new: 1 , 
   remove: 0, 
   upsert: 0,
   update: { $inc: { count: 1 } } }","code":13}

请帮帮我。

5 个答案:

答案 0 :(得分:1)

我测试一位readWrite角色的用户连接mongoDB非系统文档上执行savefindAndModify操作他们可以成功地完成。

请确保

  • mongoose.createConnctionmongoose.connect中连接数据库的正确用户名和密码。
  • 此用户确实存在db.system.users readWrite角色。
  • readWrite用户只能修改所有非系统集合中的数据system.js集合

答案 1 :(得分:0)

尝试给他dbAdmin角色。

答案 2 :(得分:0)

或者尝试禁用授权或添加连接到数据库的用户 将用户添加到数据库的示例:

db.createUser({
   user: "admin", 
   pwd: "test", 
   roles: [ { role: "dbAdmin", db: "shop" } ] 
})

其中:

  • db:"shop" - 是名称数据库
  • pwd: "test" - 密码数据库
  • user: "admin" - 通过其与数据库建立连接的用户,例如db.auth('admin', 'test')

答案 3 :(得分:0)

如果为bypassDocumentValidation指定了findAndModify,则需要dbAdmin角色或具有bypassDocumentValidation权限的自定义角色。

最好将布尔参数指定为truefalse,而不是01

答案 4 :(得分:-1)

我认为这会对你有所帮助: Manage User and Roles in MongoDB