mongoose 更新数据库中一个数组的某一个值怎么写?

非数组的,我已经用以下代码实现了
db.hotel.update({name: "张三"}, {$set: {name: "张六"}})

这种数组的,我怎么写? update(list中的index的 name改成张三)

list: [
    {
        id:1,
        name: "李四"
    },
    {
        id:2,
        name: "王五"
    }
]
阅读 3.5k
1 个回答

mongodb 官方文档

当前数据:

{
  _id: 4,
  grades: [
     { grade: 80, mean: 75, std: 8 },
     { grade: 85, mean: 90, std: 5 },
     { grade: 85, mean: 85, std: 8 }
  ]
}

下面的语句会修改数组中某个元素的std属性:

db.students.updateOne(
   { _id: 4, "grades.grade": 85 },
   { $set: { "grades.$.std" : 6 } }
)

结果:

{
   "_id" : 4,
   "grades" : [
      { "grade" : 80, "mean" : 75, "std" : 8 },
      { "grade" : 85, "mean" : 90, "std" : 6 },
      { "grade" : 85, "mean" : 85, "std" : 8 }
   ]
}

注意因为是updateOne所以虽然有两个grade为85的元素,但只有先匹配到的被修改了。

对应到你的例子

// 值
db.collections.updateOne({_id:'xxx','list.name':'张三'},{$set:{'list.$.name':'李四'}})
// 下标
db.collections.updateOne({_id:'xxx'},{$set:{`list.${index}.name`:'李四'}})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题