猫鼬更新对象数组中匹配条件的元素的值

Posted

技术标签:

【中文标题】猫鼬更新对象数组中匹配条件的元素的值【英文标题】:mongoose update value in array of objects at elements that match a condition 【发布时间】:2021-09-23 21:46:45 【问题描述】:

我有一个模式,每个模式都包含一个看起来像这样的数组:

path:[
    null,
    _id: AAAAA, name: name1,
    _id: BBBBB, name: name2,
    _id: CCCCC, name: name3
]

(第一个元素始终为空,长度未知且值看起来不像这样)

我想更改这些数组中每个元素的“名称”属性如果“_id”属性等于一个变量。

我无法做到这一点,我们将不胜感激!

【问题讨论】:

你可以使用这个操作符:docs.mongodb.com/manual/reference/operator/update/… @CuongLeNgoc 嘿,谢谢,这对我有用,介意将其发布为答案以便我接受吗? 我认为它已在其他问题中得到回答,因此没有必要重复回答。 【参考方案1】:

回答任何寻找相同事物的人:

 Item.updateMany("path._id": update._id,
     $set:  'path.$[element].name':  update.newName ,
     arrayFilters: [ 'element._id': mongoose.Types.ObjectId(update._id) ] 
 )

【讨论】:

以上是关于猫鼬更新对象数组中匹配条件的元素的值的主要内容,如果未能解决你的问题,请参考以下文章

在子数组猫鼬中找到只有匹配对象的对象数组?

猫鼬更新数组并添加新元素

在猫鼬的子数组中获取具有匹配对象的对象

在猫鼬的子数组中获取具有匹配对象的对象

猫鼬更新数组对象中的字段

从属于一个文档的对象数组中获取一个元素(猫鼬)