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

Nâng cấp hàng loạt trong MongoDB bằng cách sử dụng mongoose

Đặc biệt là "mongoose", hoặc ít nhất là chưa viết. MongoDB shell kể từ bản phát hành 2.6 thực sự sử dụng "API hoạt động hàng loạt" "ẩn" như đối với tất cả các phương thức trợ giúp chung. Trong quá trình triển khai, nó sẽ cố gắng thực hiện điều này trước tiên và nếu máy chủ phiên bản cũ hơn được phát hiện thì sẽ có "dự phòng" cho việc triển khai kế thừa.

Tất cả các phương thức mongoose "hiện tại" sử dụng triển khai "kế thừa" hoặc phản hồi mối quan tâm ghi và các phương thức kế thừa cơ bản. Nhưng có một .collection trình truy cập từ bất kỳ mô hình mongoose nhất định nào về cơ bản truy cập "đối tượng bộ sưu tập" từ "trình điều khiển gốc của nút" cơ bản mà mongoose được triển khai chính nó:

 var mongoose = require('mongoose'),
     Schema = mongoose.Schema;

 mongoose.connect('mongodb://localhost/test');

 var sampleSchema  = new Schema({},{ "strict": false });

 var Sample = mongoose.model( "Sample", sampleSchema, "sample" );

 mongoose.connection.on("open", function(err,conn) { 

    var bulk = Sample.collection.initializeOrderedBulkOp();
    var counter = 0;

    // representing a long loop
    for ( var x = 0; x < 100000; x++ ) {

        bulk.find(/* some search */).upsert().updateOne(
            /* update conditions */
        });
        counter++;

        if ( counter % 1000 == 0 )
            bulk.execute(function(err,result) {             
                bulk = Sample.collection.initializeOrderedBulkOp();
            });
    }

    if ( counter % 1000 != 0 )
        bulk.execute(function(err,result) {
           // maybe do something with result
        });

 });

Lợi ích chính ở đó là "các phương thức mongoose" thực sự nhận thức được rằng một kết nối có thể chưa thực sự được thực hiện và "xếp hàng" cho đến khi điều này hoàn tất. Trình điều khiển gốc mà bạn đang "tìm hiểu" không phân biệt được điều này.

Vì vậy, bạn thực sự phải biết rằng kết nối được thiết lập theo một cách hoặc hình thức nào đó. Nhưng bạn có thể sử dụng các phương pháp trình điều khiển gốc miễn là bạn cẩn thận với những gì bạn đang làm.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 5 cách để có được tháng từ một ngày trong MongoDB

  2. Thông báo ClusterControl 1.7.1:Hỗ trợ PostgreSQL 11 và MongoDB 4.0, Giám sát nâng cao

  3. Kết nối MongoDb bị từ chối

  4. Google Cloud Mongo DB:IP bên ngoài không kết nối

  5. Chèn / cập nhật hàng loạt bằng Mongoid?