I MongoDB 2.6 lades $out-aggregationsoperatorn till som skriver resultatet av aggregeringen till en samling. Detta ger ett enkelt sätt att göra en kopia på serversidan av alla objekt i en samling till en annan samling i samma databas med hjälp av Java-drivrutinen (jag använde Java-drivrutin version 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);
One-liner-versionen:
source.aggregate(Arrays.asList((DBObject)new BasicDBObject("$out", "target")));
Enligt dokumenten, för stora datamängder (>100MB) kanske du vill använda alternativet allowDiskUse (Aggregation Memory Restrictions), även om jag inte stötte på den gränsen när jag körde den på en>2GB-samling, så det kanske inte gäller till just denna pipeline, åtminstone i 2.6.0.