我在mongoose中有一个数组字段,我需要更新。现在我正在使用以下内容:
var fieldsToSet = {
somename: req.body.username,
email: req.body.email.toLowerCase(),
$addToSet:{array_field:'some single value'},
search: [
req.body.username,
req.body.email,
],
};
我使用
更新它 req.app.db.models.User.findByIdAndUpdate(req.user.id, fieldsToSet, options, function(err, user) {
if (err) {
return workflow.emit('exception', err);
}
workflow.emit('patchAdmin', user);
});
然而它似乎不起作用。有人请帮助我吗?
var userSchema = new mongoose.Schema({
username: { type: String, unique: true },
password: String,
array_field:[String],
email: { type: String, unique: true },
答案 0 :(得分:2)
您不能混合基本上两种类型的“更新”选项。 MongoDB将使用提供的参数“替换”整个文档,或者应用您指定的“运算符”。
您似乎也想要$set
:
var fieldsToSet = {
"$set": {
"somename": req.body.username,
"email": req.body.email.toLowerCase(),
"search": [
req.body.username,
req.body.email,
]
},
"$addToSet":{ "array_field": 'some single value' },
};