使用mongoose更新数组

时间:2014-08-07 03:17:11

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

我在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 },

1 个答案:

答案 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' },
};