【问题标题】:MongoDB aggregate with total count as variable以总数为变量的 MongoDB 聚合
【发布时间】:2019-11-01 19:02:59
【问题描述】:

我有一个条件说:创建一个 mongodb 查询,该查询提取索赔审查员总已结算索赔的 5%,例如,我的文档是: 索赔收集

{ 
    "_id" : ObjectId("5dbbb6b693f50332a533f4db"), 
    "active" : true, 
    "status" : "settled", 
}

{ 
    "_id" : ObjectId("5dbbb6b693f50332a533f4db"), 
    "active" : true, 
    "status" : "unsettled", 
}

我可以这样计算总数。

db.getCollection("claims").aggregate([
    {$match: { 'status': 'trm'}},
    { $count: "total"}
])

例如,它给了我 42 的计数。

所以我想要实现的是计算已结算数据的总数,将总数设置为变量并将 $limit 部分中公式的 5% 应用为

{
    $limit: $total * 0.05
}

我无法将一个管道的总数设置为变量并将其应用于另一管道。

请帮忙。如何达到这种条件?

【问题讨论】:

标签: mongodb aggregation-framework aggregate


【解决方案1】:

您可以通过添加项目阶段并使用乘法运算符来做到这一点,如下所示:

db.getCollection("claims").aggregate([
  {
    $match: {
      "status": "trm"
    }
  },
  {
    $count: "total"
  },
  {
    $project: {
      "total": {
        $multiply: [
          "$total",
          0.95
        ]
      }
    }
  }
])

https://mongoplayground.net/p/VsypWLI6iJt

文档:https://docs.mongodb.com/manual/reference/operator/aggregation/multiply

【讨论】:

    猜你喜欢
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 2015-11-22
    • 2021-07-12
    • 1970-01-01
    相关资源
    最近更新 更多