Nodejs с Mongoose возвращает одно значение объекта вместо нескольких в массиве - PullRequest
0 голосов
/ 20 февраля 2019
data=[{
       locId: '332wn',
       locadetails: [
                    { loc: 'ny',
                      status: true
                    },
                     { loc: 'ca',
                      status: null
                    },
                    { loc: 'tx',
                      status: null
                    }
                  ]
                 }]

У меня есть следующий запрос, который пытается найти все locdetails, которые имеют открытое значение как нулевое или ложноев то время как он должен вернуть два, как видно из данных.Пожалуйста, дайте мне знать, что делать, чтобы я мог получить целый массив элементов с полем статуса, равным нулю или ложному ... Спасибо

1 Ответ

0 голосов
/ 20 февраля 2019

$elemMatch вернет первый соответствующий элемент из массива на основе условия.Вместо этого используйте Aggregation .

И оператор $, и оператор $ elemMatch проецируют первый соответствующий элемент из массива на основе условия. Ссылка

Loc.aggregate([
    { $match: { "locId": "332wn" } },
    { $unwind: "$locadetails" },
    { $match: { "locadetails.status": { $ne: true } } },
    { $group: { _id: "$_id", locId: { $first: "$locId" }, locadetails: { $push: "$locadetails" }, } }
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...