只获得与MongooseJs中的查询匹配的子子数组

use*_*027 1 mongodb

我是mongodb和mongoose的新手,我在获取子子阵列时遇到了麻烦.

我的数据是这样的:

    [
     {_id : ...,
     name : 'Category name1',
     products : [
                    {
                    code : 'zxcv'
                    name : 'T-Shirt 1',
                    items : [
                          {code:'zxcv', size : 'S'}
                          {code:'zxcv', size : 'M'}
                          {code:'zxcv', size : 'L'}
                          {code:'zxcv', size : 'XL'}

                        ]
                     },
                     {
                    code : 'qwerty'
                    name : 'T-Shirt 2',
                    items : [
                          {code:'qwerty', size : 'S'}
                          {code:'qwerty', size : 'M'}
                          {code:'qwerty', size : 'L'}
                          {code:'qwerty', size : 'XL'}

                        ]
                     }
                 ]
            },
            {_id : ...,
             name : 'Category name2',
             products : [ ... ]
             }
        ]
Run Code Online (Sandbox Code Playgroud)

我想得到代码='zxcv'的产品

如果我做:

ProductGroup.find({'products.code' : 'zxcv'},function(err, products){})
Run Code Online (Sandbox Code Playgroud)

我得到了所有第一个产品类别 - 而不仅仅是代码为''zxcv'的产品

use*_*027 5

我想到了.由于我花了几个小时寻找答案而找不到答案,也许这会帮助另一个有相同问题的菜鸟:

要获得匹配的产品:

ProductGroup.find({'products.code' : 'zxcv'},'products.code.$.items', function(err, products){})
Run Code Online (Sandbox Code Playgroud)