如何更新nodejs中的mongo嵌套数组?
Posted
技术标签:
【中文标题】如何更新nodejs中的mongo嵌套数组?【英文标题】:How to update a mongo nested array in nodejs? 【发布时间】:2022-01-24 05:30:22 【问题描述】:这是我的模型:
const userSchema = mongoose.Schema(
given_name: type: String, required: true ,
email: type: String, required: true ,
picture: type: String ,
id: type: String ,
shelf: [ readlist: [String] ]
)
在用户的书架内,还有一个名为 readlist 的数组。每次用户将一本书添加到他的阅读列表时,这都会更新。 我在创建用户时尝试了以下方式:
User.create( email: email, given_name: given_name, picture: picture, id: sub, shelf: readlist: [] );
但它正在架子数组内创建一个对象。 如何直接在shelf数组里面创建一个readlist数组,并在readlist里面添加值?
【问题讨论】:
你的架子是故意的吗? 是的,我希望里面有阅读清单、待阅读清单和阅读清单。 所以,我认为将它们组织起来是个好主意。 【参考方案1】:您可以尝试使用定位operator $:
User.updateOne(
_id
,
"$push":
"shelf.$.readlist": book
)
【讨论】:
创建用户时如何创建货架? 该代码仅在我删除 $ 时才有效。以上是关于如何更新nodejs中的mongo嵌套数组?的主要内容,如果未能解决你的问题,请参考以下文章
Mongoose:通过 findOneAndUpdate 查询使用嵌套对象数组的总和更新父子数据属性不起作用