聚合多次查找

时间:2021-05-31 10:06:24

标签: mongodb

我有 4 个集合,我想将此集合中的数据用于我的购物车页面

  1. 用户
  2. 项目
  3. 邮政编码
  4. 供应商

这是我收藏的模型
UserCollection : { _id :1, cart:[{ itemsId:10 }], zipcode:{ userZipCodeId: 0000 } }

ItemsCollection: [{ _id: 10, title: itemstitle }]

ZipCodeCollection:[{ _id: 0000, placeName: NY,serviceProviders:[100,101,102] }]

Providers :[ { _id: 100, title: Happy Store},{ _id: 101, title: ABC Store}]

在我的购物车页面上,我想要用户购物车项目数据,检查用户邮政编码并从邮政编码中的服务提供商 ZipCodeCollection 中搜索,然后从提供商集合中获取提供商信息

这是我的代码

             User.aggregate([
                { $match: { _id: req.user._id } },

                {
                    $lookup:
                    {
                        from: 'ItemsCollection',
                        localField: 'cart',
                        foreignField: '_id',
                        as : "cartList"
                    },
                },


                 {

                    $lookup:
                    {
                        from: 'zipcode',
                        localField: 'zipcode.userZipCodeId',
                        foreignField: '_id',
                        as : "zipcodeList"

                    },      
                },

                {
                    $lookup:
                    {
                        from: 'providers',
                        localField: 'zipcodeList.providers',
                        foreignField: '_id',
                        as : "providersList"

                    },                      
                },
    
                {"$match":{"providersList.status": true }},
                {
                    $project:
                    {
                        _id:1,
                        pincode:1,
                        email:1,
                        name:1,
                        cartList:1,
                        zipcodeList:1,
                        cartList:1

                    }
                }   

这里工作正常,但需要更多时间(超过秒)来执行我担心性能和糟糕的设计,如何提高此代码的性能和设计

0 个答案:

没有答案