使用mongoose更新数组

Using mongoose to update an array

本文关键字:数组 更新 mongoose 使用      更新时间:2023-09-26

我有一个数组字段在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 },

你不能混合使用本质上是两种类型的"update"选项。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' },
};