MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

mongodb di chuyển tài liệu từ bộ sưu tập này sang bộ sưu tập khác

Các hoạt động hàng loạt @ markus-w-mahlberg được hiển thị (và @ mark-mullin đã được tinh chỉnh) hiệu quả nhưng không an toàn như đã viết. Nếu BulleInsert không thành công, thì BulkRemove sẽ vẫn tiếp tục. Để đảm bảo bạn không bị mất bất kỳ bản ghi nào khi di chuyển, hãy sử dụng cái này để thay thế:

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. Làm thế nào để thiết lập useMongoClient (Mongoose 4.11.0)?

  2. Xử lý BSON Marshaling tùy chỉnh

  3. MongoDB có thể sử dụng một chỉ mục khi kiểm tra sự tồn tại của một trường có toán tử $ tồn tại không?

  4. Nhận tập hợp con mảng trong mongodb bằng cách sử dụng nguồn mảng

  5. Xác suất va chạm của ObjectId và UUID trong một hệ thống phân tán lớn