当前位置: 首页 > 知识库问答 >
问题:

如何使用moongoose更新子文档数组中的特定元素?[副本]

拓拔弘厚
2023-03-14

我在我的应用程序中使用node.js和猫鼬。我有一个模式和一个子模式。

const childrenSchema = new mongoose.Schema({
  name: { type: String, required: true, trim: true },
  hobbies: [String]
})

const parentSchema  = new mongoose.Schema({
  name: {
   type: String, trim: true, required: true,
  },
  children: [childrenSchema],
})

const parent = mongoose.model('parent', parentSchema)

我想更改parrent中的特定子对象。我试过这样的方法:

const parentId = '1234'

const childToUpdate = {
  _id: '8765432',
  hobbies: ['guitar', 'javascript']
}

Parent.findOneAndUpdate({ _id: parentId}, { $set: { children: { 
 childToUpdate } } },
{ fields: { children: 1 }, new: true
})

谢谢大家的帮助

共有1个答案

刘选
2023-03-14

当您使用猫鼬时,如果您想添加一个新的子元素,您可以利用猫鼬的功能

Parent.findOne({ _id: parentId}).exec()
.then(parent => {
   return parent.children.push(childToUpdate).save();
});
 类似资料:
  • 问题内容: 我正在使用MongoDB数据库,该数据库的收集模型包括 班级 , 学生 , 学科 和[学术] 表现 。以下是基于猫鼬的架构和模型: 该集合的文件是最复杂的地段; 示例文档为: 我能够使用以下代码检索现有的班级文档并将其添加到分数中: 但是,如何添加/更新/删除该特定学生的成绩?我需要能够通过以下方式与集合进行交互: 检索所有学生或特定学生的分数(检索数组中的特定元素) 为特定主题添加/

  • 将mongodb与pymongo一起使用,我有以下文档: 我想更新示例子文档(这是一个数组元素,因为可能有多个示例)。我有以下代码,但它不工作... 谁能告诉我这个有什么问题吗?

  • 问题内容: 我的文档中具有以下结构: 我想更新 someField 和 someField2, 但仅更新数组中的一项,与 _arrayId 匹配的 项 (例如;并且仅针对此文档(例如)),而不更新其他项。 该 arrayIds 是不是唯一的,这就是为什么我需要它是针对特定文档的文档。如果要为数组中存在的每个文档更新该值,则可以使用,但这不是我想要的。 我试图在Java中完成此操作,但也可以使用命令

  • 在我的MongoDB中,我有文档,如下所示。如何更新内部文档结构中的文档:<code>〔{1},〔{2}〕,〔{3}〕、〔{4}〕</code>。 例如:子子文档中的子文档具有和以及 和

  • 我有一份这样的文件: 我想通过将其与数量字段(2*800)相乘来更新价格字段,其中的结果将更新/分配给价格。(对于本例,价格更新为1600)。 更新后的文档: 我的选择查询如下: 我怎样才能做到这一点?

  • 问题内容: 我读过这篇文章和同一个人的这篇文章,说您无法更新数组元素。 我还阅读了最近的一篇文章,有人说可以用某种方式完成此操作,但是我在文档中都无法获得有关stackoverflow的任何信息。 有什么办法可以解决这个问题?谢谢! 问题答案: 实际上,写这些答案的“家伙”是我:)那时,还没有一种更新数组元素的方法。只能存储数组,而 不能 更新数组成员。 现在,在更新文档时,您可以将第二个参数传递