Mongoose :Find and filter nested array Mongoose :Find and filter nested array mongoose mongoose

Mongoose :Find and filter nested array


Try below query:

ListModel.findOne({"_id" : "57e6bcab6b383120f0395aed", 'recipients.status' : 1},{_id:1, name: 1, subject:1,'recipients.$': 1}, function(err,list){...});


You can use aggregate to get it in an easy way like this

ListModel.aggregate(    { $match: {_id: ObjectId("57e6bcab6b383120f0395aed")}},    { $unwind: '$recipients'},    { $match: {'recipients.status':1}})

Output

{    "_id" : ObjectId("57e6bcab6b383120f0395aed"),    "name" : "Emailing listname",    "subject" : "List subject",    "recipients" : {        "uid" : "57e93266c3c0b1dc1625986f",        "status" : 1    }}

To understand aggregation in details see the docs here