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

Cách tốt nhất để truy vấn tất cả tài liệu từ bộ sưu tập mongodb theo cách phản ứng với bộ nhớ RAM tràn ngập

Tôi không phải là chuyên gia về mongodb, nhưng dựa trên các ví dụ tôi đã thấy, đây là một mẫu tôi sẽ thử.

Tôi đã bỏ qua các sự kiện khác ngoài dữ liệu, vì điều chỉnh rằng một trong những sự kiện có vẻ là mối quan tâm chính.

var cursor = db.collection('mycollection').find({});  

const cursorNext = new Rx.BehaviourSubject('next');  // signal first batch then wait
const nextBatch = () => {
  if(cursor.hasNext()) {
    cursorNext.next('next');
  }
});

cursorNext
  .switchMap(() =>                            // wait for cursorNext to signal
     Rx.Observable.fromPromise(cursor.next())  // get a single doc
       .repeat()                               // get another
       .takeWhile(() => cursor.hasNext() )     // stop taking if out of data
       .take(batchSize)                        // until full batch
       .toArray()                              // combine into a single emit
  )
  .map(docsBatch => {
    // do something with the batch
    // return docsBatch or modified doscBatch
  })
  ... // other operators?
  .subscribe(x => {
    ...
    nextBatch();
  });         

Tôi đang cố gắng tổng hợp một bài kiểm tra luồng Rx này mà không cần mongodb, trong thời gian chờ đợi, điều này có thể cung cấp cho bạn một số ý tưởng.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:tổng hợp trường thêm $ dự án với giá trị tĩnh

  2. Kết nối với MongoDB không thành công khi sử dụng .NET Core chạy trên Linux

  3. SQLite cục bộ so với MongoDB từ xa

  4. Trong MongoDB, bạn làm cách nào để lập chỉ mục các trường đối tượng được nhúng trong một mảng?

  5. Hiểu chỉ mục MongoDB