说我想一键更新数以千计的mongodb模型,我会遇到意想不到的问题吗?一旦有第三种语言添加到webapp,我们的想法就是更新所有条目。
型号:
JobSchema = new mongoose.Schema({
info:{
instruments:[{
index:String,
de:String,
en:String,
}],
},
});
自定义更新(数千条结果):
Job.find({}, function(err, foundJobs){
//no error handling for the sake of simplicity
foundJobs.forEach(function(job){
job.info.instruments.forEach(function(instr, index){
instr.en = 'FOO'
})
})
})
我知道更好的想法是创建一个额外的“乐器”模型,但后来我无法搜索包含某些乐器的JobModels ......至少我找不到一个好方法......
答案 0 :(得分:0)
试试这个......
Job.updateMany({},
{ $set: { instruments.$.en: 'FOO' }, (err, result) => {
if (err) {
next(err);
} else {
res.status(200).json(result);
}
});
我知道更好的想法是创建一个额外的“乐器”模型,但后来我无法搜索包含某些乐器的JobModels ......至少我找不到一个好方法......
你可以通过Id搜索Job中的引用数组。
JobSchema = new mongoose.Schema({
info:{
instruments: [{type: mongoose.Schema.Types.ObjectId, ref: 'Instrument'}],
}
});
InstrumentSchema = new mongoose.Schema({
index:String,
de:String,
en:String
});
// assuming instrumentIDs is an array containing instrument object IDs.
JobSchema.find({ info.instruments: {$all : instrumentIDs } })
imho,如果您所描述的更新在满月时发生过一次,则不值得对其进行规范化。