我想知道用官方节点客户端手动中止正在运行的查询的最有效方法是什么。在我当前的代码中,我正在为每个远程客户端创建一个新的数据库连接,然后只是在客户端提前断开连接时关闭这些连接,这很有效,但似乎这可能是一种浪费的做事方式(编辑:的确如此)是; detailed here)。我想如果可以直接访问mongodb客户端连接池并关闭特定连接而不是整个数据库,这可能会更高效吗?
mongo服务器同时查询几个大型地理空间集合,因此在客户端断开连接时释放资源是此实现中性能的重要部分。会有一些不必要的请求进入 - 人们喜欢在地图上点击很多,即使你 限制它们。
我当前代码的受控示例:
var MongoClient = require('mongodb').MongoClient,
express = require("express"),
app = express();
app.get('/my-route', function(request, response) {
MongoClient.connect(connectionUri, function(err, db) {
if (err) throw err;
request.on("close", function() {
db.close(true, function(err, res) {
if (err) throw err;
});
});
// make async DB queries as normal and send response when done
// ...
});
});