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

Lỗi MongoDB CursorNotFound trên collection.find () cho một vài trăm bản ghi nhỏ

Bạn có thể thử 3 cách sau:

a) Đặt con trỏ đến false

db.collection.find().noCursorTimeout();

Bạn phải đóng con trỏ tại một thời điểm nào đó bằng cursor.close ();

b) Hoặc giảm kích thước hàng loạt

db.inventory.find().batchSize(10);

c) Thử lại khi con trỏ hết hạn:

let processed = 0;
let updated = 0;

while(true) {
    const cursor = db.snapshots.find().sort({ _id: 1 }).skip(processed);

    try {
        while (cursor.hasNext()) {
            const doc = cursor.next();

            ++processed;

            if (doc.stream && doc.roundedDate && !doc.sid) {
                db.snapshots.update({
                    _id: doc._id
                }, { $set: {
                    sid: `${ doc.stream.valueOf() }-${ doc.roundedDate }`
                }});

                ++updated;
            } 
        }

        break; // Done processing all, exit outer loop
    } catch (err) {
        if (err.code !== 43) {
            // Something else than a timeout went wrong. Abort loop.

            throw err;
        }
    }
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để điền đối tượng có mảng đối tượng trong mongoose?

  2. Lưu trữ dữ liệu vị trí trong tài liệu Mongodb

  3. kết nối với mongodb cục bộ từ bộ chứa docker

  4. Đối tượng MongoDB được tuần tự hóa dưới dạng JSON

  5. Tổng hợp theo múi giờ địa phương trong mongodb