V MongoDB 2.6 byl přidán operátor agregace $out, který zapisuje výsledky agregace do kolekce. To poskytuje jednoduchý způsob, jak vytvořit na straně serveru kopii všech položek v kolekci do jiné kolekce ve stejné databázi pomocí ovladače Java (použil jsem ovladač Java verze 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);
Verze s jednou vložkou:
source.aggregate(Arrays.asList((DBObject)new BasicDBObject("$out", "target")));
Podle dokumentů můžete pro velké datové sady (>100 MB) použít možnost allowDiskUse (Omezení agregační paměti), ačkoli jsem na tento limit nenarazil, když jsem jej spouštěl na sbírce> 2 GB, takže nemusí platit k tomuto konkrétnímu potrubí, alespoň ve verzi 2.6.0.