【问题标题】:How to send huge amount of documents from mongoDB over http?如何通过 http 从 mongoDB 发送大量文档?
【发布时间】:2018-12-20 08:51:15
【问题描述】:

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

【问题讨论】:

标签: javascript mongodb express


【解决方案1】:

您应该压缩您的回复。

npm i --save 压缩

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

【讨论】:

  • 使用压缩不需要使用流,是吗?
  • 顺便说一句,它对典型的 mongoDB 错误 CursorNotFound 没有帮助
猜你喜欢
  • 1970-01-01
  • 2011-10-24
  • 2016-08-01
  • 1970-01-01
  • 2017-11-30
  • 1970-01-01
  • 1970-01-01
  • 2015-05-24
  • 1970-01-01
相关资源
最近更新 更多