从Node更新Mongo

时间:2016-09-29 12:43:43

标签: javascript node.js mongodb

我是Node的新手。

在Mongo shell中,我在集合" system.user"

上发出此命令
db.system.users.find({_id: "test.admin"})

并取回此记录

{
  "_id": "test.admin",
  "user": "admin",
  "db": "test",
  "credentials": {
    "SCRAM-SHA-1": {
      "iterationCount": 10000,
      "salt": "hBehS02+DJL+XX92dpuXnw==",
      "storedKey": "6TifIE7lc4TLKkMSYC6yjX/WZ5Y=",
      "serverKey": "gqxsc9a6Z8HvBLpZl8bNxiPsYWA="
    }
  },
  "roles": [{
    "role": "root",
    "db": "admin"
  }]
}

我的问题是,有没有人有一个示例JavaScript,它将告诉我如何更新角色属性。这样在JavaScript /节点更新之后

db.system.users.find({_id: "test.admin"})
然后

将阅读

{
  "_id": "test.admin",
  "user": "admin",
  "db": "test",
  "credentials": {
    "SCRAM-SHA-1": {
      "iterationCount": 10000,
      "salt": "hBehS02+DJL+XX92dpuXnw==",
      "storedKey": "6TifIE7lc4TLKkMSYC6yjX/WZ5Y=",
      "serverKey": "gqxsc9a6Z8HvBLpZl8bNxiPsYWA="
    }
  },
  "roles": [{
    "role": "dbowner",
    "db": "admin"
  }]
}

更改"角色" :" root"到"角色" :" dbowner"

我正在寻找最多" atomic"这样做的方式,也许某种json解析。 不只是简单的字符串替换。

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情

db.system.users.updateOne({_id: "test.admin"}, {"roles.role":"dbowner"}, {upsert:1});