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

时间:2017-12-13 15:11:28

标签: javascript node.js mongodb mongoose mongoose-schema

我在我的应用中使用node.js和mongoose。 我有一个架构和一个子架构。

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)

我想改变一个特定的孩子。 我尝试过这样的事情:

const parentId = '1234'

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

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

感谢大家的帮助

1 个答案:

答案 0 :(得分:0)

当您使用Mongoose时,如果您想添加新的孩子,您可以利用猫鼬功能

Parent.findOne({ _id: parentId}).exec()
.then(parent => {
   return parent.children.push(childToUpdate).save();
});