У меня есть коллекция SensorData, которая всегда содержит следующие поля: _id , datetimeMeasure , sensorId , originalDataId и значение и имеет следующий индекс рядом с индексом идентификатора по умолчанию: {"sensorId": 1, "datetimeMeasure": -1}
При выполнении запроса ниже через Loopback (NodeJS) я получаю следующую ошибку: Ошибка исполнителя во время команды поиска :: вызвана операцией :: Сортировка, использовавшая более 33554432 байтов ОЗУ. Добавьте индекс или укажите меньший лимит.
// Loopback query
SensorData.find({
where: {
sensorId: { inq: [] /* array with sensor ids */ },
datetimeMeasure: { between: ["2018-12-24T23:00:00.000Z", "2018-12-31T23:00:00.000Z"] }
}
});
// Mongo query (Loopback seems to automatically add the sort)
find({
sensorId: { $in: [] /* array with sensor ids */ },
datetimeMeasure: {
$gte: "2018-12-24T23:00:00.000Z",
$lte: "2018-12-31T23:00:00.000Z"
}
}).sort({ datetimeMeasure: -1 })
Когда я проверяю журналы запросов, я вижу, что используется индекс (IXSCAN). В чем может быть проблема?
Я использую Mongo 4.0.6 с Loopback 3.25.0 на NodeJS 10.15.0