Sử dụng forEach() trên cursor để lặp qua kết quả và insert() vào collection khác (database tạm hoặc collection tạm).
Tạo collection nguồn:
> db.demo43.insertOne({"StudentName":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e25d4b3cfb11e5c34d898e5") }
> db.demo43.insertOne({"StudentName":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e25d4b8cfb11e5c34d898e6") }
> db.demo43.insertOne({"StudentName":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e25d4bbcfb11e5c34d898e7") }
Xem dữ liệu nguồn:
> db.demo43.find();
Sao chép sang collection demo44 (database tạm):
> db.demo43.find().forEach(function(myDocument) { db.demo44.insert(myDocument); })Kiểm tra collection đích:
> db.demo44.find();Lưu ý:
forEachchạy ở **client-side** (mongo shell), kéo dữ liệu về rồi insert lại → chậm với dữ liệu lớn- _id được giữ nguyên (có thể trùng nếu insert vào cùng collection)
- Cách hiệu quả hơn (server-side):
db.demo43.aggregate([{$out: "demo44"}])hoặc$merge(MongoDB 4.2+) - Database "tạm" thường dùng prefix
tmp_hoặc TTL index để tự xóa