Di MongoDB 2.6, operator agregasi $out ditambahkan yang menulis hasil agregasi ke koleksi. Ini menyediakan cara sederhana untuk melakukan salinan sisi server dari semua item dalam koleksi ke koleksi lain dalam database yang sama menggunakan driver Java (saya menggunakan driver Java versi 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);
Versi satu baris:
source.aggregate(Arrays.asList((DBObject)new BasicDBObject("$out", "target")));
Menurut dokumen, untuk kumpulan data besar (> 100MB) Anda mungkin ingin menggunakan opsi allowDiskUse (Pembatasan Memori Agregasi), meskipun saya tidak mencapai batas itu ketika saya menjalankannya pada koleksi> 2GB, jadi itu mungkin tidak berlaku ke saluran khusus ini, setidaknya di 2.6.0.