我有一个mongoDB数据库,我希望能够一次获取数百万个文档,而不会崩溃,从而避免了游标错误。 我想使用express(nodeJS)通过http发送数据。 我的收藏有成千上万的文档,每个文档都有一个包含数千个较小文档的字段。 我当前选择的大小为500MB。 您知道这种大数据案例的最佳做法吗?我应该实施基于限制/跳过的解决方案吗?如果是,请提供代码示例吗?
我已经尝试了文档流传输,这似乎更可靠,但是我仍然遇到相同的游标问题。 (找不到光标)
app.get("/api/:collection", (req, res) => {
const filter = JSON.parse(req.query["filter"] || "{}");
const projection = JSON.parse(req.query["projection"] || "{}");
const sort = JSON.parse(req.query["sort"] || "{}");
db.collection(req.params.collection).find(filter)
.project(projection).sort(sort)
.stream({ transform: JSON.stringify })
.addCursorFlag("noCursorTimeout", true)
.pipe(res);
});
答案 0 :(得分:2)
您应该gzip您的回复。
npm i-保存压缩
var compression = require('compression');
var express = require('express');
var app = express();
app.use(compression());