我有两个收藏Accounts
和Debts
。我需要使Accounts
集合中的“净节省”大于一定数量的项目。净储蓄是从帐户储蓄中减去所有债务后的储蓄。关于如何解决此问题的任何指示都将非常有帮助。
帐户收款:
{
"AccountNumber": "A1234",
"Savings": 1000
}
{
"AccountNumber": "A4567",
"Savings": 500
}
债务追收:
{
"AccountNumber": "A1234",
"Debt": 10,
"Lender": "A"
}
{
"AccountNumber": "A1234",
"Debt": 20,
"Lender": "B"
}
{
"AccountNumber": "A4567",
"Debt": 50,
"Lender": "B"
}
净储蓄> 500的帐户
{
"AccountNumber": "A1234",
"NetSavings": 970
}
您可以先从Accounts
集合中找到帐号,然后$in
与Debits
集合一起使用
const accountNumbers = (await Account.find({ Savings: { $gte: 500 }})).map(({ AccountNumber }) => AccountNumber)
const debits = await Debits.find({ AccountNumber: { $in: accountNumbers }})
或使用聚合
Accounts.aggregte([
{ $lookup: {
from: "debits",
localField: "AccountNumber",
foreignField: "AccountNumber",
as: "acc"
}},
{ $addFields: {
NetSavings: {
$subtract: ["$Savings", { $sum: "$acc.Debt" }]
}
}}
])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句