如何使用另一个集合中的信息过滤MongoDB集合?

软件事项

我有两个收藏AccountsDebts我需要使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集合中找到帐号,然后$inDebits集合一起使用

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据另一个集合中存储的数组过滤Firestore中的文档?

将MongoDB(3.0)集合的子集保存到Python中的另一个集合

MongoDB如何将索引定义从一个集合复制到另一个集合?

如何有条件地从另一个集合中删除MongoDB?

猫鼬:根据另一个集合中的值过滤集合

MongoDB 3.6-如何将一个集合中的匹配项追加到另一个集合中?

使用mongoose nodejs在另一个集合mongoDB中填充集合

如何使用mongodb合并两个集合结果和另一个集合

如何获取Firebase中另一个集合的文档中的集合

如何在一个集合中查找未被另一个集合中的文档引用的MongoDB文档?

MongoDB过滤器集合未包含在另一个集合的array字段中

mongodb-查找逗号分隔另一个集合中的值并获取详细信息

mongodb-根据使用量计数从一个集合中获取顶级项目,作为另一个集合中的字段

根据另一个集合中的ID对mongodb集合项进行排名

Raven DB通过另一个集合中的数据过滤集合

在通过流星的publish方法提供数据之前,从另一个mongodb集合中添加信息

如何获取另一个集合中引用的MongoDB文档的列表

Mongodb将一个集合复制到另一个集合中

如何确定一个集合是否包含Python中的另一个集合

将集合数组放入mongodb的另一个集合中

在 mongodb 中的另一个集合的 foreignField 上使用 $group 进行分组

如何在另一个集合中拥有一个集合?

如何将 mongodb 集合复制/克隆到另一个集合?

如何使用同一数据库中另一个集合的数据创建 mongoDB 集合

如何将集合复制到 mongoDB 中的另一个新集合

如何在 mongoDB 中查询每个文档的另一个集合

MongoDB 使用另一个集合中的另一个字段更新字段

如何使用mongodb中主集合的objectID在另一个集合中查找

如何在firebase中从一个集合访问另一个集合