[英]Update single sub-document attribute with Mongoose
我有一个带有一系列子文档的Mongo Collection,如下所示:
var aliasSchema = new Schema({
name: String,
alias_type: String,
isCommonName: { type: Boolean, default: false }
});
var parentSchema = new Schema(
{
name: String,
description: { type: String, required: false },
observation: { type: String, required: false },
indexed: { type: Boolean, default: true },
aliases: [aliasSchema],
}
我想更新一个别名对象的alias_type
。
我尝试过使用两种方法与猫鼬
1。
Parent.findOneAndUpdate({'aliases.name': aliasName },{$set: {"aliases.$.alias_type": req.body.aliasForm.alias_type}}, {new: true}, function(err, aliasDoc) {
if (err) {
res.status(400)
res.send(err);
}
console.log(aliasDoc);
res.status(200);
res.send(aliasDoc);
});
和
2。
Parent.update({'aliases.name': aliasName },{$set: {"aliases.$.alias_type": req.body.aliasForm.alias_type}}, function(err, aliasDoc) {
if (err) {
res.status(400)
res.send(err);
}
console.log(aliasDoc);
res.status(200);
res.send(aliasDoc);
});
但是,我仍然无法更新alias_type。 当我像这样在mongo控制台中运行选项(1)时,它起作用了:
db.getCollection('parent').findOneAndUpdate({'aliases.name': 'SomeValue' },{$set:{'aliases.$.alias_type': 'AnotherValue'}})
谁能告诉我我在做什么错?
我在调用参数之一时犯了一个错误。 我在问题中发布的update()
技术有效:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.