是否有任何功能可以向集合中所有现有的mongodb对象添加新属性

时间:2019-08-23 12:04:06

标签: node.js mongodb

我有一个具有以下架构的现有数据库

let Employee = new Schema({
    first_name: { type: String },
    last_name: { type: String },
    title: { type: String },
    email: { type: String },
    gender: { type: String },
    location: { type: String },
    phone: { type: Number }

由于我的数据库中已经有很多记录,因此我想向数据库中添加一个新属性branch。有同样的功能吗?

1 个答案:

答案 0 :(得分:1)

这取决于您是否要将相同的值添加到数据库中的所有记录,还是需要每个Employee拥有不同的分支。

您可以像这样简单地将其包含在Schema中,从而强制您的Schema Model具有分支:

let Employee = new Schema({
  first_name: { type: String },
  last_name: { type: String },
  title: { type: String },
  email: { type: String },
  gender: { type: String },
  location: { type: String },
  phone: { type: Number },
  branch: { type: String, default: 'some_branch'}
});

现在,当您返回任何员工时,默认情况下他们应该有一个分支,并且下次保存它们时,会将其硬保存到数据库中。

如果您需要更新所有记录以具有分支,则可以执行以下操作:

EmployeeModel.updateMany({}, { $set: { branch: 'some_branch'} } function(err, res) {
  // Success!
});

编辑

  • 使用Model.updateMany()将自动传递{ multi: true }选项。
  • 使用$ set运算符将确保更新您需要更改或添加的特定字段。
  • 您可以将其转换为使用$ addFields的聚合管道,但是$ set是我相信的表达式别名,应该可以访问所需的所有内容。

希望这会有所帮助!