MongoDB 2.6 में, $out एग्रीगेशन ऑपरेटर जोड़ा गया था जो एक संग्रह के लिए एकत्रीकरण के परिणाम लिखता है। यह जावा ड्राइवर (मैंने जावा ड्राइवर संस्करण 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 में।