如何通过http从mongoDB发送大量文档?

时间:2018-12-20 08:51:16

标签: javascript mongodb express

我有一个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); 
});

1 个答案:

答案 0 :(得分:2)

您应该gzip您的回复。

npm i-保存压缩

var compression = require('compression');  
var express = require('express');  
var app = express();  
app.use(compression());