MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Documentos de busca do MongoDB lentos (indexação usada)


Eu encontrei o mesmo problema quando estava buscando cerca de 35.000 documentos. Para resolvê-lo, usei a função de agregação (sakulstra:aggregate ) e, no meu caso, aumentou incrivelmente o pedido. O formato do resultado obviamente não é o mesmo, mas ainda é fácil de usar para calcular tudo o que preciso.

Antes (7000ms):
const historicalAssetAttributes = HistoricalAssetAttributes.find({
        date:{'$gte':startDate,'$lte':endDate},
        assetId: {$in: assetIds}
    }, {
        fields:{
            "date":1,
            "assetId":1,
            "close":1
        }
    }).fetch();

Depois (300ms):
const historicalAssetAttributes = HistoricalAssetAttributes.aggregate([
        {
            '$match': {
                date: {'$gte': startDate, '$lte': endDate},
                assetId: {$in: assetIds}
            }
        }, {
            '$group':{
                _id: {assetId: "$assetId"},
                close: {
                    '$push': {
                        date: "$date",
                        value: "$close"
                    }
                }
            }
        }
    ]);