Как отправить огромное количество документов из mongoDB через http? - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть база данных mongoDB, и я хочу иметь возможность извлекать миллионы документов одновременно, без сбоев, избегая ошибок курсоров.Я хочу отправить данные через http, используя экспресс (nodeJS).В моей коллекции тысячи и тысячи документов, и у каждого есть поле, содержащее тысячи документов меньшего размера.Текущий размер моей коллекции составляет 500 МБ.Знаете ли вы лучшие практики для этого случая больших данных?Должен ли я реализовать решение на основе лимита / пропуска?Если да, не могли бы вы предоставить пример кода?

Я уже пробовал потоковую передачу документов, которая кажется более надежной, но я все еще сталкиваюсь с той же проблемой с курсором.(Курсор не найден)

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 голосов
/ 20 декабря 2018

Вы должны распаковать свой ответ.

npm i - сохранить сжатие

var compression = require('compression');  
var express = require('express');  
var app = express();  
app.use(compression());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...