为什么我的mongodb更新操作不起作用? (Node.js)

时间:2019-10-16 12:08:00

标签: node.js mongodb

我有以下mongodb集合:

Channels [
{
  _id:'1'
  members:[
  {
    _id:'1'
    skipRounds:1
  },
  {
    _id:'2'
    skipRounds:3
  },       
  ]
},
{
  _id:'2'
  members:[
  {
    _id:'1'
    skipRounds:3
  },
  {
    _id:'2'
    skipRounds:5
  },       
  ]
},   
]

我试图为特定频道中的特定用户设置skipRounds上的值。

例如:我试图在ID为1到10的频道中为ID为2的用户设置skipRounds

db.Channels.updateOne({
    '_id':'1',
    'members._id' : '2'
}, {
  $set: {'users.$.skipRounds': 10}
})

但是它似乎不起作用。有人知道为什么吗?

2 个答案:

答案 0 :(得分:0)

要更新嵌套数组中的元素,请尝试以下操作:

db.Channels.update(
    {"_id" : "1", "members._id" : "2"},
    {
        $set : {"members.$.skipRounds" : 10}
    })

答案 1 :(得分:0)

$set: {'users.$.skipRounds': 10}替换为$set: {"members.skipRounds": 10}示例

db.Channels.updateOne({
    "_id":"1",
    "members._id" : "2"
}, {
  $set: {"members.skipRounds": 10}
})