使用猫鼬更新

时间:2020-04-01 16:29:06

标签: node.js mongodb mongoose

我有一个要更新的旧架构。更新架构后,在新架构之前保存的先前记录不会反映我在新架构上指定的新字段。如何使它们反映新架构上的所有字段。 我尝试使用mongoose defaults,但是没有用。 这是我的代码

const user = mongoose.Schema({
  _id : mongoose.Schema.Types.ObjectId,
  email : String,
  firstname : String,
  lastname : String
})

module.exports = mongoose.model('User', user)

我想添加age字段(它应该出现在所有以前的文档中)。当前,只有新文档反映了age字段。我怎么做?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以只运行updateMany命令并过滤掉所有没有User's字段的age,然后在age字段中添加一个值之undefined

User.updateMany({ age: { $exists: false} }, { $set: { age: undefined } });

除了通过mongoose进行操作之外,您也可以直接进入数据库并通过mongo shell进行操作,如下所示:

db.users.updateMany({ age: { $exists: false} }, { $set: { age: undefined } });

这是看起来像的gif:

users db query