javascript - 使用 mongoose 更新数组

标签 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 },

最佳答案

您不能混合本质上是两种类型的“更新”选项。 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' },
};

关于javascript - 使用 mongoose 更新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25173558/

相关文章:

javascript - 到达 iFrame 底部时不滚动网页

javascript - 自异步以来如何优化此代码块

node.js - 查询依赖数组大小与某个值匹配的文档

mongodb - mongodb 存储文档元数据

javascript - 模拟调用 'deals.insert'错误效果时出现异常

javascript - 没有在我的网页中获得倒计时功能

JavaScript window.open() 不会立即加载窗口

javascript - 平滑滚动效果在 Mozilla 和 IE 中不起作用?

css - 在 Node 中抛出错误(在 CSS 中)

javascript - Node.js 和 Node.js REPL 之间的差异