Mongoose 更新内部字段

Posted

技术标签:

【中文标题】Mongoose 更新内部字段【英文标题】:Mongoose update inner field 【发布时间】:2021-07-09 06:14:04 【问题描述】:

我的 mongoDB 中有这类文档:


   id: my_id
   inner_foo : [
      
         inner_id : id_A
         inner_field : field_A
      ,
      
         inner_id : id_B
         inner_field : field_B
      
   ]

收到请求时,我得到了两个 id,id 一个(这里是 my_id)和一个 inner_id 一个(这里例如 id_A)。 我如何使用 JS 和 mongoose 更新内部字段?例如数组之一的inner_field 字段包含使用其inner_id 的对象

我认为我不能使用findByIdAndUpdate,因为我无法使用该方法直接引用正确的inner_foo 条目,那么我应该怎么做呢?

非常感谢! 凯夫。

【问题讨论】:

【参考方案1】:

演示 - https://mongoplayground.net/p/2pW4UrcVFYr

阅读 - https://docs.mongodb.com/manual/reference/operator/update/positional/

db.collection.update(
     id: "my_id", "inner_foo.inner_id": "id_A" , // find the matching document
     $set:  "inner_foo.$.inner_field": "id_A_Update"  // set the value on the matched array index
)

【讨论】:

@KevinHeirich 很高兴它有帮助:)

以上是关于Mongoose 更新内部字段的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose 聚合内部查找按字段分组

更新架构声明后,Mongoose 不会更新新字段

更新架构声明后,Mongoose 不会更新新字段

Mongoose如何更新子文档字段?

Mongoose - 更新嵌套数组中的字段

Mongoose - 更新嵌套数组中的字段