Database
[{_id:1,title:"a board",lists:[{_id:1,title:"a list"}],cards:[{_id:1,title:"a card",list_id:1},{_id:2,title:"another card",list_id:1}]}]
Query
db.collection.aggregate([{$project:{_id:1,title:1,lists:{$map:{input:"$lists",as:"list",in:{$mergeObjects:["$$list",{cards:{$filter:{input:"$cards",cond:{$eq:["$$this.list_id","$$list._id"]}}}}]}}}}}])