Как ускорить время ответа на запрос?

Существует коллекция в базе, которая насчитывается около 4.6 миллиона документов.
(структуру данных можно увидеть на скриншоте.)

введите сюда описание изображения


При попытке вытащить из данной коллекции хотя бы одно значение - время ответа на запрос достигает более 3 секунд:
(и это на моей локальной довольно мощной машине.)

введите сюда описание изображения


Код работы с запросом выглядит следующим образом:

    // server.js
    const http = require('http');
    const { getProducts } = require('./controllers/currencyController');
    
    const server = http.createServer((req, res) => {
        if(req.url.match(/\/api\/currency.+/g) && req.method === 'GET') {
            getProducts(req, res);
        } else {
            res.writeHead(404, { 'Content-Type': 'application/json' })
            res.end(JSON.stringify({ message: 'Route Not Found' }))
        }
    })
    
    const PORT =  process.env.PORT || 5000
    server.listen(PORT, () => console.log(`Server running on port ${PORT}`))
    module.exports = server;


    //  currencyModel.js
    const {MongoClient} = require('mongodb');
    const client = new MongoClient('mongodb://127.0.0.1:27017/');
    
    const findAll = async (currencyPair) => {
        try{
            await client.connect();
            const testingData = client.db('Trading').collection(currencyPair);
            return testingData;
        }
        catch(e){
            console.log(e);
        }
    }

    module.exports = {
        findAll,
    }


// currencyController.js
const currencyData = require('../models/currencyModel')

async function getProducts(req, res) {
    try {
        const currency_data = await currencyData.findAll('EUR/USD');
        res.writeHead(200, { 'Content-Type': 'application/json' });
        res.end(JSON.stringify(await currency_data.find({id:1}).toArray()));
    } catch (error) {
        console.log(error)
    }
}

module.exports = {
    getProducts,
}

Подозреваю что причина такого долгого ответа может быть как то связано с отсутствием индексов. (те числовые, что присутствуют сейчас созданы кастомно.)

Вопрос:
Каким образом можно ускорить время получения ответа от сервера после получения запроса?
(желательно без применения ORM и фреймворков.)
И каким вообще должно быть это время в идеале?


Ответы (0 шт):