How does mongoose query multiple levels?

  node.js, question

I have four watches
A table is the Category where the website’s catalog categories and subdirectories are stored.
A table is Intro, which is an introduction module and stores the classification and data belonging to the introduction module.
One table is News, which is a news module and stores the classification and data belonging to the news module.
A table shows that Product is a product module and stores the classification and data belonging to the product module.

var CategorySchema = new mongoose.Schema({
 key:String,
 catname:String,
 subcategories:[{
 key:String,
 catname:String,
 module:String
 }]
 
 });
 
 var cateList=[{
 key:"about",
 Catname: "Entering the Enterprise",
 subcategories:[{
 key:"about",
 Catname: "Enterprise Profile",
 module:"intro"
 },{
 key:"ideal",
 Catname: "Enterprise Ideal",
 module:"intro"
 },{
 key:"honour",
 Catname: "Enterprise Honor",
 module:"intro"
 }]
 },{
 key:"news",
 Catname: "Dynamic Information",
 subcategories:[{
 key:"news",
 Catname: "Enterprise Dynamics",
 module:"news"
 },{
 key:"industry-info",
 Catname: "Industry Information",
 module:"news"
 },{
 key:"new-arrival",
 Catname: "New Products to Market",
 module:"product"
 }]
 }];

Suppose you have already filled in the data through cateList.
May I know how to filter out the categories that belong to intro module, news module and product respectively in Category?
If simple find looks like this

Category.find({'subcategories.module':'news'}).exec(function(err,docs){
 if(err) return callback(err);
 if(docs){
 callback(null,docs);
 bracket
 });

Will all the data be returned?
The only result I hope to return is

bracket
 key:"news",
 Catname: "Enterprise Dynamics",
 module:"news"
 },{
 key:"industry-info",
 Catname: "Industry Information",
 module:"news"
 bracket

I’m not familiar with mongoose operation yet. Do I need to use populate to check the data? Or aggregate? Ask the great god for help.

No one answered here.
However, I found help on Cnode and solved the problem.

Category
 .aggregate()
 .unwind('subcategories')
 .match({'subcategories.module':'intro'})
 .group({_id:'$subcategories.module', subcategories: {$push: "$subcategories"} })
 .exec(function(err,docs){
 if(err) return callback(err);
 if(docs){
 console.log(docs);
 callback(null,docs);
 bracket
 });