MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोंगोडब दस्तावेजों को एक संग्रह से दूसरे संग्रह में ले जाता है

थोक संचालन @ मार्कस-डब्ल्यू-महलबर्ग ने दिखाया (और @ मार्क-मुलिन परिष्कृत) कुशल हैं लेकिन लिखित रूप में असुरक्षित हैं। यदि बल्कइंसर्ट विफल हो जाता है, तो बल्क रिमूव अभी भी जारी रहेगा। यह सुनिश्चित करने के लिए कि चलते समय आप कोई रिकॉर्ड नहीं खोते हैं, इसके बजाय इसका उपयोग करें:

function insertBatch(collection, documents) {
  var bulkInsert = collection.initializeUnorderedBulkOp();
  var insertedIds = [];
  var id;
  documents.forEach(function(doc) {
    id = doc._id;
    // Insert without raising an error for duplicates
    bulkInsert.find({_id: id}).upsert().replaceOne(doc);
    insertedIds.push(id);
  });
  bulkInsert.execute();
  return insertedIds;
}

function deleteBatch(collection, documents) {
  var bulkRemove = collection.initializeUnorderedBulkOp();
  documents.forEach(function(doc) {
    bulkRemove.find({_id: doc._id}).removeOne();
  });
  bulkRemove.execute();
}

function moveDocuments(sourceCollection, targetCollection, filter, batchSize) {
  print("Moving " + sourceCollection.find(filter).count() + " documents from " + sourceCollection + " to " + targetCollection);
  var count;
  while ((count = sourceCollection.find(filter).count()) > 0) {
    print(count + " documents remaining");
    sourceDocs = sourceCollection.find(filter).limit(batchSize);
    idsOfCopiedDocs = insertBatch(targetCollection, sourceDocs);

    targetDocs = targetCollection.find({_id: {$in: idsOfCopiedDocs}});
    deleteBatch(sourceCollection, targetDocs);
  }
  print("Done!")
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. $gte और <e mongo ऑपरेटर का उपयोग करें यदि दिनांक mongodb में स्ट्रिंग प्रारूप में है

  2. हैंडल न किया गयाPromiseRejectionWarning:MongooseServerSelectionError

  3. मोंगोडब संग्रह में दस्तावेजों की संख्या की गणना कैसे करें

  4. 16mb आकार से ऊपर के दस्तावेज़ के लिए MongoDB वर्कअराउंड?

  5. नेवला पासवर्ड हैशिंग