首页 > 解决方案 > 如何更新对象数组的对象值?

问题描述

以下代码没有更新书名,如何实现我更新书名的目标?

user: {
    _id: "123",
    books: [{ title: "ABC", pages: 99 }],
}

await model.updateOne(
    {
        _id: userID,
        "books._id": bookID,
    },
    { book: { title: "" } }
);

标签: mongodb

解决方案


从您的场景中,您需要arrayFilters.

db.collection.update({
  _id: "123" //userID
},
{
  $set: {
    "books.$[book].title": ""
  }
},
{
  arrayFilters: [
    {
      "book._id": "1"  //bookID
    }
  ]
})

示例 Mongo Playground


参考

arrayFilters 参数如何在 MongoDB 中工作


推荐阅读