コレクションにコピーしてコレクションに挿入する必要があるドキュメントがたくさんあり、それらすべての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 }
});
これを行うには、私が思いつかないように見えるより良い方法があるに違いありません。どんな提案でも大歓迎です!ありがとう。