簡體   English   中英

在MongoDB集合中創建匯總階段到未完成事務總數

[英]Creating Aggregation Stage to Total Number of Open Transactions in MongoDB Collection

我在MongoDB聚合管道中使用的步驟之一如下所示:

{
  $group: {
    "_id": "$customer._id",
    "totalBalance": {
      "$sum": "$transactions.amounts.balance"
    }
  }
}

這正在按預期方式工作。 它總結了transactions.amounts.balance的數值,並給出了總的美元金額。

除此之外,我想做的是確定在確定此數字時要使用多少個事務(即,確定給定的customer_idtransactions.amount.balance > 0記錄數,其中transactions.amount.balance > 0

我嘗試這樣做:

{
  $group: {
    "_id": "$customer._id",
    "totalOpenTransactions": {
      "$sum": { "$transactions.amounts.balance" : $gt: 0 }
    }
  }
}

以上無效。 所以我也嘗試使用數組,像這樣:

{
  $group: {
    "_id": "$customer._id",
    "totalOpenTransactions": {
      "$sum": [{ "$transactions.amounts.balance" : $gt: 0 }]
    }
  }
}

也行不通。

可以這樣使用$sum嗎? 還是我需要以不同的方式處理這個特定的聚集階段?

您可以在$sum使用$ cond來做到這一點:

{
  $group: {
    "_id": "$customer._id",
    "totalOpenTransactions": { $sum: { $cond: { if: { $gt: ["$transactions.amounts.balance", 0] }, then: 1, else: 0 } } }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM