Запрос MongoDB для диапазона данных - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь запросить диапазон данных, которые не организованы по месяцам, но имеют порядковые значения. У меня есть 13 пронумерованных документов в год на человека (данные упрощены):

{ "Year" : 2015, "Pts" : 92, "Week" : 1 },
{ "Year" : 2015, "Pts" : 110.3, "Week" : 2 },
{ "Year" : 2015, "Pts" : 104.2, "Week" : 3 },
{ "Year" : 2015, "Pts" : 130.9, "Week" : 4 },
{ "Year" : 2015, "Pts" : 129, "Week" : 5 },
{ "Year" : 2016, "Pts" : 90, "Week" : 1 },
{ "Year" : 2016, "Pts" : 110.5, "Week" : 2 },
{ "Year" : 2016, "Pts" : 106, "Week" : 3 },
{ "Year" : 2016, "Pts" : 150.4, "Week" : 4 },
{ "Year" : 2016, "Pts" : 110, "Week" : 5 },
{ "Year" : 2017, "Pts" : 86.2, "Week" : 1 },
{ "Year" : 2017, "Pts" : 120.2, "Week" : 2 },
{ "Year" : 2017, "Pts" : 111, "Week" : 3 },
{ "Year" : 2017, "Pts" : 105.5, "Week" : 4 }
{ "Year" : 2017, "Pts" : 95.5, "Week" : 5 }

Я не могу понять, как получить данные, например, с 3 недели 2015 года до 3 недели 2017 года. Когда я использую следующий шаблон совпадения, он будет тянуть только недели 3 и выше для всех лет (недели 1-2 отсутствуют в результатах за 2017 и 2018 годы):

        {
            $match: 
            { 
                Week: { $gte: weekStart, $lte: weekEnd },
                Year: { $gte: startYear, $lte: endYear }
            }
        },

Я пытался использовать $, чтобы не исключать документы вне диапазона, но я получаю ошибку unknown top level operator: $not. Я также пробовал каскадировать $ и операторы, но это тоже не работает.

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 03 сентября 2018

Примерно так должно получиться:

$or : [
 { Year: startYear, Week: { $gte: weekStart} },
 { Year: { $gt: startYear, $lt: endYear } },
 { Year: endYear, Week: { $lte: weekEnd } }  
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...