@mmmq

Как запросить данные из mongodb (mongoose) из сабдокумента в рамках интервала «from» и «to»?

Здравствуйте.

Пробовал разные подходы с stackoverflow, не получается вернуть рейндж данных.

Структура документа:

{
    symbol: "test",
    data: [{
            timestamp: 1,
            value: 10,
        },
        {
            timestamp: 2,
            value: 20,
        },
        {
            timestamp: 3,
            value: 30,
        },
        {
            timestamp: 4,
            value: 40,
        },
    ]
}


Пример запроса:

function request(symbol, from, to) {
    return model.findOne({
        symbol,
        data: {
            $elemMatch: {
                timestamp: {
                    $gte: from,
                    $lt: to
                }
            }
        }
    }).then(res => res.data)
}

request('test', 2, 4)


По результату он возвращет весь массив данных.

Подскажите, как составить правильный запрос?

Спасибо.
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Che603000
c 2011 javascript
Возврат правильный. Вы получили документ который удовлетворяет вашему запросу.
У этого документа в поле data, есть элементы массива, где timestamp больше равно 2 и меньше 4
Запрос вернул документ в том виде в котором он есть в коллекции, запрос не фильтрует массив, он использует элементы массива для поиска.
Если Вы собираетесь фильтровать массив то можете в сделать это, после выполнения запроса, в найденных документах.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы