как пропустить выполнение запроса, если входной массив пуст или нет в агрегате mongoose - PullRequest
1 голос
/ 23 сентября 2019

Мне нужно найти запись с помощью совокупного запроса, и если какой-либо из заданных входных данных является пустым массивом, то нужно пропустить этот запрос.В приведенном ниже коде я дал один пустой массив для "brandFilter", тогда этот запрос должен пропустить $ при исполнении.Если у него есть какой-то массив [один, два], то он выдаст соответствующий согласованный вывод

Пример

{ $filter: {
                    input: '$products',
                    as: 'item',
                    cond: {  $and: [
                        {
                            $gte: ['$$item.prodprice', Number(price)],
                        },
                        { $in: [ "$$item.brand", brandArr ] }  
                    ]}
                }}

1 Ответ

1 голос
/ 23 сентября 2019

Следующий фильтр даст нам ожидаемый результат:

{
    $filter:{
        "input":"$products",
        "as":"item",
        "cond":{
            $and:[
                {
                    $gte: ['$$item.prodprice', Number(price)]
                },
                {
                    $or:[
                        {
                            $eq:[brandArr[0],undefined]
                        },
                        {
                            $in: [ "$$item.brand", brandArr ]
                        }
                    ]
                }
            ]
        }
    }
}
...