sql >> データベース >  >> NoSQL >> MongoDB

数百の小さなレコードのcollection.find()でのMongoDBCursorNotFoundエラー

    次の3つのことを試すことができます:

    a)設定falseへのカーソル

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

    cursor.close();

    を使用して、ある時点でカーソルを閉じる必要があります。

    b)またはバッチサイズを小さくする

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

    c)カーソルの期限が切れたら再試行します:

    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. mongo.lockファイルの用途は何ですか?

    2. Webmachineとeredisを連携させるにはどうすればよいですか?

    3. celery celerybeatはDjangoなしでデータベーススケジューラを使用できますか?

    4. java.lang.IllegalArgumentException:一意の結果またはnullが必要ですが、複数取得されました! -Spring Data Mongo