【问题标题】:How to set new fields default value in mongodb?如何在 mongodb 中设置新字段的默认值?
【发布时间】:2019-12-24 17:21:57
【问题描述】:

我有一个像下面这样的猫鼬模式:

var schema = mongoose.Schema({
    name: String
}

我有一些具有这些架构的文档,过了一会儿我添加了一个具有默认值的新字段:

var schema = mongoose.Schema({
    name: String,
    job: {type: String, default: function() { return "Job" + this.name.toLowerCase() }}
}

当我获得文档 (findOne) 时,我可以看到已设置默认值。但是当我检查数据库中的确切行时,尚未设置默认值!

当我添加新文档时,设置了默认值,一切正常;但是如何在数据库中设置旧文档的默认值?

【问题讨论】:

  • 在架构中添加默认值后,默认值将添加到新/更新的文档中
  • @AbderrahimSoubaiElidrissi 所以我应该全部更新一次吗?
  • 尝试使用钩子prefind 进行检查,例如如果字段不存在添加值

标签: mongodb mongoose


【解决方案1】:

尝试使用 hook 更新您的旧文档:

 schema.post('init', function (doc) {

  if(!doc.job){
  doc.job = "Job" + doc.name.toLowerCase();
  doc.save();

 } 

});

【讨论】:

  • 等一切都解决了,我应该删除它吧?
  • 是的,你可以删除它。
猜你喜欢
  • 2022-01-21
  • 2023-02-24
  • 2015-06-21
  • 1970-01-01
  • 1970-01-01
  • 2011-12-16
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多