当前位置: 首页 > 知识库问答 >
问题:

如何使用猫鼬设置cursorTimeoutMillis

商茂勋
2023-03-14

我在nodeJs服务器中使用mongoose(4.13.10)连接到mongodb实例

mongoose.createConnection('mongodb://user:pass@localhost:27017/mydb')

我使用游标来迭代我的数据库的记录,并对数据库进行多次查询,这需要很多时间,因此我得到游标未找到异常。我发现这些发生是由于游标的空闲超时,符合我的观察。

现在,我不想将nocursortimeout标记为true,而是将超时设置为某个高值,通过该值,我确信长时间运行的查询将完成。但我无法找到任何留档或指导如何设置cursorTimeoutMillis服务器参数。

如何设置此参数?如果可能的话,我想为一个特定的游标而不是整个连接设置它。可能吗?

共有1个答案

燕正卿
2023-03-14

您可以使用mongodb本机客户端设置cursorTimeoutMillis选项,如:

const MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://localhost:27017/test', (err, db) => {
  // Use the admin database for the operation
  const adminDb = db.admin();

  // Set the cursor timeout millis option
  adminDb.command({
    setParameter: 1,
    cursorTimeoutMillis: <num>
  }, function(err, info) {
    // Close the connection
    db.close();
  });
});

来自猫鼬,比如:

YourModel.db.db.admin().command({}, (err, res) => {
    console.log(res);
});

要在数据库运行时直接设置:

mongod --setParameter cursorTimeoutMillis=300000

文件

http://mongodb.github.io/node-mongodb-native/2.0/api/Admin.html#command

如何使用mongoose运行原始mongoDB命令?

https://docs.mongodb.com/manual/reference/parameters/#param.cursorTimeoutMillis

 类似资料:
  • 问题内容: 我有以下架构(在咖啡脚本中表示歉意) 我只想恢复一条肯定在我的数据库中的记录: 不幸的是,这总是记录下来。在mongo shell中总是返回一个值。到底是怎么回事? 问题答案: 发现问题,需要改用:

  • 问题内容: 我想用Mongoose 生成一个MongoDB 。有没有办法从Mongoose 访问构造函数? 这个问题是关于从头开始 产生新的 。生成的ID是全新的通用唯一ID。 另一个问题是关于从 现有的字符串表示形式 创建一个。在这种情况下,您已经具有ID的字符串表示形式(它可能是通用的也可能不是唯一的),并且正在将其解析为。 问题答案: 您可以在找到构造函数。这是一个例子: 是一个新生成的。

  • 问题内容: 以上似乎不起作用。记录仍然存在。 有人可以修复吗? 问题答案: 是一系列文档。所以它没有方法 您可以分别迭代和删除数组中的每个文档。 或-由于看起来您是通过(可能)唯一的id使用来查找文档的- 而不是。

  • 在前端,我有3个层次结构。 顶层显示一个测试摘要,包含统计信息,如%通过/失败、各种标签、运行标识等。 第二级由测试套件的各个部分组成,这些部分可以通过顶级运行id访问。其中包含测试的名称,特定的测试通过/失败。 第三级是实际测试本身,包括报告、通过/失败状态等。 我使用的是平均堆栈,我想知道使用1、2或3种不同的Mongoose模型在MongoDB中存储数据的利弊。我知道在数组中使用嵌入式文档的

  • 我想为用户设计一个清单。基本上,我尝试创建一个清单,其中包含一个用户id和一个包含每个项目编号的项目列表。 存在我的集合“项”的架构: 我不能设计一个库存集合,在那里我可以很容易地更新每个项目的数量并添加新项目。

  • 问题内容: 我对该方法的使用感到很困惑。这是我的用法,这是错误的: 我想要实现的只是从数据库中的事务中选择具有该用户名的事务,而我只想取出方法中列出的字段。谁能指出我该如何使用该方法?谢谢。 问题答案: 该文件说,你可以像这样实现的: 猫鼬v4.0 旧的过时的API 因此,您无需执行此操作。