在mongoose中,可以使用$set操作符来动态更新嵌入文档。$set操作符用于更新指定字段的值,而不影响其他字段。
具体步骤如下:
const mongoose = require('mongoose');
const childSchema = new mongoose.Schema({
name: String,
age: Number
});
const parentSchema = new mongoose.Schema({
children: [childSchema]
});
const Parent = mongoose.model('Parent', parentSchema);
Parent.findOneAndUpdate(
{ 'children.name': 'Child1' }, // 查询条件
{ $set: { 'children.$.age': 10 } }, // 更新操作
{ new: true } // 返回更新后的文档
)
.then(updatedParent => {
console.log(updatedParent);
})
.catch(error => {
console.error(error);
});
在上述代码中,我们使用findOneAndUpdate方法来查询并更新符合条件的文档。查询条件为{ 'children.name': 'Child1' }
,表示找到name字段为'Child1'的Child文档。更新操作为{ $set: { 'children.$.age': 10 } }
,使用$set操作符将age字段更新为10。$符号表示匹配到的第一个符合条件的文档。通过设置选项{ new: true }
,我们可以返回更新后的文档。
这样,我们就可以在mongoose中使用$set动态更新嵌入文档了。
推荐的腾讯云相关产品:腾讯云数据库MongoDB(TencentDB for MongoDB)。
产品介绍链接地址:https://cloud.tencent.com/product/mongodb
领取专属 10元无门槛券
手把手带您无忧上云