【问题标题】:How do you add a new field to multiple documents after you have updated the mongoose schema?更新 mongoose 模式后,如何向多个文档添加新字段?
【发布时间】:2019-05-01 13:48:18
【问题描述】:

我和我的搭档到处搜索并尝试了 Mongo 文档的所有内容,以查找如何插入和更新新架构以及更新数据库中的所有文档。我们没有运气。现在我们正在尝试将两个新字段添加到数据库中的所有当前文档中。两者都是数组字段,我们已经更新了架构,但没有显示文档本身。我也完全知道有很多类似的问题,但我想看看是否有人能解决我们的问题,因为它似乎适用于其他所有人,但不适用于我们

  • MongoDB 文档
  • update、$set 和 upsert 聚合函数
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

//Schema for how we define a movie object 

const MovieSchema = new Schema({ 
    id: { 
        type: Number
    },
    title: { 
        type: String
    }, 
    year: { 
        type: Number
    }, 
    rating: { 
        type: String //(PG, PG-13, R, NR, MA)
    }, 
    cast: { 
        type: [String], //Hold multiple cast members based on how many the user types in
        default: undefined
    }, 
    quotes: { 
        type: [String],
        default: undefined
    },
    genres: { 
        type: [String],
        default: undefined
    }, 
    synopsis: { 
        type: String
    }, 
    imageURL: { 
        type: String
    },
    bannerURL: { 
        type: String
    }
})

const Movie = mongoose.model('movies', MovieSchema);

module.exports = Movie;

这些是添加到所有文档中的新字段

comments:{ 
        type: [String],
        default: undefined
    },
characters: { 
        type: [String]
        default: undefined
}

我们已经通过命令行完成了大部分 mongo 功能,除非没有办法,否则我们更愿意这样做

【问题讨论】:

  • 我自己刚刚经历过。让我知道我的回答是否对您有帮助。 :)

标签: reactjs mongodb mongoose


【解决方案1】:

假设您已经更新了架构以拥有两个新字段:

Movie.find()
   .then((allMovies) => {
       allMovies.forEach((movieSchema) => {
           //create two new fields in each schema
           movieSchema.comments = []
           movieSchema.characters = []
           //save the schema we updated
           movieSchema.save()
       })
   })
   .catch((errors) => {
       return res.status(400).json({ nomoviesfound: "could not find movies"})
   })

【讨论】:

  • 好的,我可以把它放在路由文件夹中吗?我还假设无法通过命令行执行此操作?
  • 如果你愿意的话,你可以把它放在你的 index.js 文件中,真的是任何定义了你的电影模型的地方。您只需运行一次。
  • 太棒了,我现在就试试!
  • 怎么样? :)
  • 天啊!太感谢了!它就像一个魅力!
猜你喜欢
  • 2021-06-21
  • 2023-02-14
  • 2017-08-31
  • 2019-02-26
  • 2015-02-19
  • 2012-10-27
  • 2020-11-19
  • 2020-02-07
  • 1970-01-01
相关资源
最近更新 更多