Ale*_*rie 10 mongoose mongodb node.js
我正在使用Mongoose和一个非常大的Mongo数据库,我想要MySet.find({})在10秒后超时的昂贵查询.
我已经尝试在我的连接上设置套接字超时,但是如果超出超时,服务器会崩溃:
var options = {server: {socketOptions: {socketTimeoutMS: 10000}}};
var conn = mongoose.connect('mongodb://localhost/my_db', options);
Run Code Online (Sandbox Code Playgroud)
我已经尝试将maxTimeMS选项传递给find函数,但这根本没有任何影响:
MySet.find({}, {}, {timeout: true, maxTimeMS: 10000}, function(err, doc) {});
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Joh*_*yHK 10
您可以使用Query#maxTimeMongoose本身未记录的方法来执行此操作,但它是maxTimeMSMongoose用于其流畅查询接口的库的一部分.
所以在你的情况下,你会称之为:
MySet.find({}).maxTime(10000).exec(function(err, doc) { ... });
Run Code Online (Sandbox Code Playgroud)
您可以mongoose.set('debug', true);通过启用Mongoose调试来确认它是否正确设置了该选项Query#maxTime,然后您将看到此查询的控制台输出,如下所示:
Mongoose: myset.find({}) { maxTimeMS: 10000, safe: true, fields: {} }
Run Code Online (Sandbox Code Playgroud)