更新猫鼬模式后,如何在多个文档中添加新字段?

时间:2019-05-01 05:39:36

标签: reactjs mongodb mongoose

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

  • MongoDB文档
  • 更新,$ 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函数,并且除非没有办法,否则宁愿那样做

1 个答案:

答案 0 :(得分:0)

假设您已经将模式更新为具有两个新字段:

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"})
   })