MongoDB 2.6では、集計の結果をコレクションに書き込む$out集計演算子が追加されました。これにより、Javaドライバー(Javaドライバーバージョン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);
ワンライナーバージョン:
source.aggregate(Arrays.asList((DBObject)new BasicDBObject("$out", "target")));
ドキュメントによると、大規模なデータセット(> 100MB)の場合、allowDiskUseオプション(集約メモリ制限)を使用することをお勧めしますが、> 2GBのコレクションで実行したときにその制限に達していないため、適用されない場合がありますこの特定のパイプラインに、少なくとも2.6.0では。