MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB CursorNotFound Błąd w kolekcji.find() dla kilkuset małych rekordów

Możesz wypróbować te 3 rzeczy:

a) Ustaw kursor na fałsz

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

Musisz zamknąć kursor w pewnym momencie kursorem.close();

b) Lub zmniejsz rozmiar partii

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

c) Spróbuj ponownie, gdy kursor wygaśnie:

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. Zachowaj nazwę właściwości Id w osadzonym dokumencie za pomocą sterownika mongo C#

  2. Połączenie zostało przerwane po aktualizacji MongoDB.Driver z wersji 2.7.0 do 2.7.1

  3. Jak mogę stwierdzić, gdzie mongoDB przechowuje dane? (nie jest w domyślnym /data/db!)

  4. Znajdź wszystkie dokumenty w ciągu ostatnich n dni

  5. Jak uzyskać wartość ciągu znaków MongoID przy użyciu PHP?