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