Быстрый расчет статистики по большому количеству документов в MongoDB - PullRequest
0 голосов
/ 31 октября 2018

Схема моего документа:

  {
    symbol: String,
    exchange: String,
    price: Number,
    amount: Number,
    type: {
        type: String,
        enum: ['buy', 'sell']
    },
    timestamp: Number
}, {
    autoIndex: false,
    id: false,
    versionKey: false
});

В моем кластере MongoDb Atlas более 40 миллионов документов. Все документы добавляются в одну большую коллекцию.

Мне нужно вычислить некоторые значения в отфильтрованной коллекции как минимум по одному параметру - символ . Отметка времени , цена и сумма минимальный и максимальный диапазоны не являются обязательными. После сбора фильтра я должен рассчитать количество документов зависит от типа, сумма сумм зависит от типа, мин / макс / средняя цена и сумма. Кроме того, в зависимости от временных отметок первых и последних документов в отфильтрованной коллекции, должны быть созданы данные линейного графика относительно диапазонов временных отметок.

Я использую Mongoose ORM в Node.js и метод find () работает очень медленно, обрабатывая ~ 100K документов в течение 100 с! *

Как добиться максимальной производительности для моего случая?

1 Ответ

0 голосов
/ 12 ноября 2018

Создание индекса {symbol: "hashed", цена: 1, отметка времени: 1} сократило время ответа до адекватной 1 секунды.

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