In MongoDB 2.6 is de aggregatie-operator $out toegevoegd die de resultaten van de aggregatie naar een verzameling schrijft. Dit biedt een eenvoudige manier om een server-side kopie te maken van alle items in een collectie naar een andere collectie in dezelfde database met behulp van het Java-stuurprogramma (ik gebruikte Java-stuurprogramma versie 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);
De one-liner-versie:
source.aggregate(Arrays.asList((DBObject)new BasicDBObject("$out", "target")));
Volgens de documenten wil je voor grote datasets (> 100 MB) misschien de allowDiskUse-optie (Aggregation Memory Restrictions) gebruiken, hoewel ik die limiet niet tegenkwam toen ik het op een verzameling van> 2 GB uitvoerde, dus het is mogelijk niet van toepassing naar deze specifieke pijplijn, in ieder geval in 2.6.0.