Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Sao chép tài liệu sang collection mới trong MongoDB

Để sao chép tài liệu sang collection mới, dùng aggregation với $out. Cú pháp:

db.oldCollection.aggregate([{ $sample: { size: N }}, {$out: "newCollection"}], {allowDiskUse: true});

Tạo collection nguồn:

> db.sourceCollection.insertOne({"EmployeeName":"Robert","EmployeeSalary":15000});
{ "acknowledged" : true, "insertedId" : ObjectId("5e0397c1f5e889d7a5199506") }
> db.sourceCollection.insertOne({"EmployeeName":"David","EmployeeSalary":25000});
{ "acknowledged" : true, "insertedId" : ObjectId("5e0397c3f5e889d7a5199507") }
> db.sourceCollection.insertOne({"EmployeeName":"Mike","EmployeeSalary":29000});
{ "acknowledged" : true, "insertedId" : ObjectId("5e0397c4f5e889d7a5199508") }

Hiển thị nguồn:

> db.sourceCollection.find().pretty();

Tạo collection đích và sao chép:

> db.createCollection('destinationCollection');
{ "ok" : 1 }
> db.sourceCollection.aggregate([{ $sample: { size: 333333 }}, {$out: "destinationCollection"}], {allowDiskUse: true});

Kiểm tra collection đích:

> db.destinationCollection.find().pretty()

Giải thích: $sample lấy mẫu ngẫu nhiên (size lớn = lấy tất cả). $out ghi kết quả vào collection mới (tự tạo nếu chưa có). allowDiskUse: true cho phép dùng disk khi dữ liệu lớn. Thứ tự có thể thay đổi do $sample ngẫu nhiên.