Seperti yang Anda singgung, Anda perlu mengelompokkan kembali dokumen yang difilter dan dibatalkan kembali ke bentuk aslinya. Anda dapat melakukannya dengan $group
:
Collection.aggregate([
{ $match:
{ _id: ObjectID(collection_id) }
},
{ $unwind: "$images" },
{ $match:
{ "images.deleted": null }
},
// Regroup the docs by _id to reassemble the images array
{$group: {
_id: '$_id',
name: {$first: '$name'},
images: {$push: '$images'}
}}
], function (err, result) {
if (err) {
console.log(err);
return;
}
console.log(result);
});