我有一个带有一系列子文档的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
。
我尝试过两种使用Mongoose的方法
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'}})
谁能告诉我我做错了什么?
答案 0 :(得分:0)
我在调用其中一个参数时犯了一个错误。我在问题中发布的update()
技术有效:)