`$ set`可以替换mongoDB中布尔类型的字段值吗?

时间:2018-05-30 08:49:41

标签: node.js mongodb mongoose

以下是问题的示例架构:

const sample = new Schema({
  scope: {
    type: String,
    enum: ['draft', 'published'],
    default: 'draft',
  },
  isOutOfService: {
    type: Boolean,
    default: false,
  },
});

模式的示例数据:

const data = {
  _id: 1,
  scope: 'draft',
  isOutOfService: false,
};

现在,我想将字段scope更新为published,将isOutOfService值更新为true

我使用下面的代码与mongoose:

const updated = await sample.findOneAndUpdate({
  _id: 1
}, {
  $set: {
    scope: 'published',
    isOutOfService: true
  }
}, {
  new: true,
}).lean().exec();

更新操作的结果是:

{
  _id: 1,
  scope: 'published',
  isOutOfService: false,
}

我不知道为什么scope被替换而isOutOfService没有?

0 个答案:

没有答案