MongoError:游标被杀死或超时

时间:2016-04-30 18:38:38

标签: mongodb node-mongodb-native

我正在尝试通过流式传输,暂停,处理和恢复来处理MongoDB数据库中的数据。每个文档的处理最多可能需要2-3分钟,每个文档都由集群中的工作人员完成。我在master中流式传输文档,然后将文档发送到workers进行处理。问题是我在流中20-30分钟(或大约10个以上的文档)收到错误MongoError: cursor killed or timed out。在处理时间低于此值之前,我已成功使用此方法。

配置: node-mongodb-native@1.4.40mongodb version 3.0.5node 0.10

MongoClient.connect(config.mongodb, function(err, db) {
  if (err) helper.logError(err)
  var collection = db.collection('collectionName');
  stream = collection.find(condition).stream();
  stream.on("data", function(doc) {
    stream.pause();
    doSomeProcessing().then(function(){
      stream.resume()
    });
  });
});

1 个答案:

答案 0 :(得分:0)

您可以通过调用addCursorFlag'noCursorTimeout'标记添加到find()返回的游标来禁用游标超时:

stream = collection.find(condition).addCursorFlag('noCursorTimeout', true).stream();