Схема моего документа:
{
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 с! *
Как добиться максимальной производительности для моего случая?