我在一个集合中有一堆文档,我需要复制并插入到集合中,只更改所有文档的 parent_id。这需要很长时间并且会耗尽我的 CPU。这是我目前的实现。我只需要更改所有文档上的 parent_id。
// find all the documents that need to be copied
models.States.find({parent_id: id, id: { $in: progress} }).exec(function (err, states) {
if (err) {
console.log(err);
throw err;
}
var insert_arr = [];
// copy every document into an array
for (var i = 0; i < states.length; i++) {
// copy with the new id
insert_arr.push({
parent_id: new_parent_id,
id: states[i].id,
// data is a pretty big object
data: states[i].data,
})
}
// batch insert
models.States.create(insert_arr, function (err) {
if (err) {
console.log(err);
throw err;
}
});
});
这是我正在使用的架构
var states_schema = new Schema({
id : { type: Number, required: true },
parent_id : { type: Number, required: true },
data : { type: Schema.Types.Mixed, required: true }
});
必须有更好的方法来做到这一点,我似乎无法想出。任何建议都非常受欢迎!谢谢。