Запрос Model.find ({}), использующий mongoose с node.js и экспресс-комбинацию, не может получить большое количество наборов данных из более чем 200 000 документов - PullRequest
0 голосов
/ 17 июня 2019

Я использую простой запрос get с использованием mongoose в сочетании с express и node для извлечения всех документов в определенной коллекции, которую я определил в экземпляре MongoDB.Он отлично работает для небольших объемов данных, но не работает для больших наборов данных.Я могу выполнить тот же запрос в Mongo Shell, и через некоторое время он может вернуть данные.

Я попытался изменить запрос для использования lean () функция вместе с функцией find ({}) mongoose, но проблема все еще сохраняется.

/* 
    Fetch all the players
    GET - /
*/
getPlayerRouter.route('/')
    .get((req, res, next) => {

        Player.find({}).lean()
            .then((players) => {
                res.status(200).json({
                    success: true,
                    totalPlayers: players.length,
                    players
                });
            })
            .catch((err) => console.log(err));

    });

Я ожидаю, что запрос извлечет все документы из коллекции.

1 Ответ

0 голосов
/ 17 июня 2019
var query=Player.find({}).stream();
query.on('data', (players)=> {
    res.status(200).json({
                      success: true,
                      totalPlayers: players.length,
                      players
                  });
 }).on('error',(err)=>{

 }).on('close',()=>{
    console.log('connection closed');
 });

Вы можете использовать stream в mongoose для обработки больших записей. Комментарий о том, работает ли он.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...