Database

[{user:1,listings:[{status:"publish"}]},{user:2,listings:[{status:"publish"}]},{user:3,listings:[{status:"draft"},{status:"publish"},{status:"draft"}]},{user:4,listings:[{status:"publish"},{status:"draft"}]},{user:7,listings:[{status:"draft"},{status:"draft"}]},{user:5,listings:[{status:"publish"}]}]

Query

db.collection.aggregate([{$set:{listings:{$filter:{input:"$listings",as:"item",cond:{$eq:["$$item.status","publish"]}}}}},{$match:{$expr:{$gt:[{$size:"$listings"},0]}}},{$project:{listings:1,_id:0}}])

Result