W MongoDB 2.6 dodano operator agregacji $out, który zapisuje wyniki agregacji w kolekcji. Zapewnia to prosty sposób wykonania kopii po stronie serwera wszystkich elementów kolekcji do innej kolekcji w tej samej bazie danych za pomocą sterownika Java (użyłem sterownika Java w wersji 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);
Wersja jednowierszowa:
source.aggregate(Arrays.asList((DBObject)new BasicDBObject("$out", "target")));
Zgodnie z dokumentacją, w przypadku dużych zbiorów danych (>100 MB) możesz chcieć użyć opcji allowDiskUse (Ograniczenia pamięci agregacji), chociaż nie osiągnąłem tego limitu, gdy uruchomiłem go na kolekcji> 2 GB, więc może nie mieć zastosowania do tego konkretnego rurociągu, przynajmniej w 2.6.0.