Trong MongoDB 2.6, toán tử tổng hợp $ out đã được thêm vào để ghi kết quả của tổng hợp vào một tập hợp. Điều này cung cấp một cách đơn giản để thực hiện sao chép phía máy chủ của tất cả các mục trong một bộ sưu tập sang một bộ sưu tập khác trong cùng một cơ sở dữ liệu bằng cách sử dụng trình điều khiển Java (tôi đã sử dụng trình điều khiển Java phiên bản 2.12.0):
// set up pipeline
List<DBObject> ops = new ArrayList<DBObject>();
ops.add(new BasicDBObject("$out", "target")); // writes to collection "target"
// run it
MongoClient client = new MongoClient("host");
DBCollection source = client.getDB("db").getCollection("source")
source.aggregate(ops);
Phiên bản một lớp lót:
source.aggregate(Arrays.asList((DBObject)new BasicDBObject("$out", "target")));
Theo tài liệu, đối với tập dữ liệu lớn (> 100MB), bạn có thể muốn sử dụng tùy chọn allowDiskUse (Giới hạn bộ nhớ tổng hợp), mặc dù tôi đã không gặp phải giới hạn đó khi tôi chạy nó trên bộ sưu tập> 2GB, vì vậy nó có thể không áp dụng tới đường ống cụ thể này, ít nhất là trong 2.6.0.