node.js - 多个查找阶段,展开和匹配,并根据查找阶段的字段显示反应(但该字段存在于所有查找阶段)
问题描述
我在数据库中有 3 个收藏:礼品库存转移、礼品库存接收和礼品库存主控。我必须通过过滤礼物、开始日期和结束日期来显示礼物动态摘要。 react 中的礼品库存汇总表- 是我想在 react 中显示的方式。
我在礼品库存主收藏上使用聚合来连接礼品和主要库存数量,但日期在礼品库存转移,礼品库存接收收藏。我还使用展开阶段来展开数组,匹配阶段来比较日期。
我想从转移集合中获取转移数量和从接收集合中接收数量,但基于输入日期并将其连接到礼品库存主集合中的主要库存数量。是否可以根据这些集合中的日期显示数据?我使用下面的代码得到的结果有冗余数据,我无法使用日期显示,因为一个数组元素同时具有传输日期和执行查找的接收日期。
礼品库存大师系列:
giftCode : "1001" Branch : "00000" Quantity : 55 DamagedStock : "10" __v : 0 TransferredStock : 10
礼品转移收藏:
Received:0 GiftCode:"1001" Quantity:2 FromBranch:"00000" ToBranch:"00006" Description:"test" Date:2021-09-26T09:17:57.613+00:00
礼品接收收藏:
GiftCode:"1001" Quantity:2 FromBranch:"00000" ToBranch:"00006" Description:"test" Date:2021-09-26T09:17:57.613+00:00
等待 GiftStockMaster.aggregate ([
{
$match:
{ giftCode: req.params.giftcode },
},
{
$lookup: {
from: "giftstockreceives",
localField: "giftCode",
localField: "Branch",
foreignField: "giftCode",
foreignField: "ToBranch",
as: "receivedetails",
},
},
{ $unwind : "$receivedetails" } ,
{$match:
{"receivedetails.Date": {"$gte":req.params.fromdate,"$lte":req.params.todate}},
},
{
$lookup: {
from: "giftredeemeds",
localField: "giftCode",
localField: "Branch",
foreignField: "GiftCode",
foreignField: "BranchCode",
as: "redeemdetails",
},
},
{ $unwind : "$redeemdetails" } ,
{$match:
{"redeemdetails.Date": {"$gte":new Date(req.params.fromdate),"$lte":new Date(req.params.todate)}},
},
{
$lookup: {
from: "giftstocktransfers",
localField: "giftCode",
localField: "Branch",
foreignField: "GiftCode",
foreignField: "FromBranch",
as: "transferdetails",
},
},
{ $unwind : "$transferdetails" } ,
{$match:
{"transferdetails.Date": {"$gte":new Date(req.params.fromdate),"$lte":new Date(req.params.todate)}},
},