【问题标题】:how to subtract the average duration如何减去平均持续时间
【发布时间】:2018-08-30 07:28:13
【问题描述】:

我正在尝试这种聚合,但输出显示为反向

{
  "SWITCHID": "Z4-W40-SS451A/5",
  "CREATE_DATE": ISODate("2018-02-24T19:00:14.808Z"),
  "RECEIVEDDATE": ISODate("2018-02-24T20:30:14.808Z"),
  "STATUS": "LIGHTS ON",
  "avgduration": 202.50562416666668,
  "offduration": 1.5
} {
  "SWITCHID": "Z4-W40-SS451A/5",
  "CREATE_DATE": ISODate("2018-02-24T19:00:14.808Z"),
  "RECEIVEDDATE": ISODate("2018-02-24T20:30:14.808Z"),
  "STATUS": "LIGHTS OFF",
  "avgduration": 269.5074988888889,
  "offduration": 1.5
}
db.k.aggregate({
  "$group": {
    _id: {
      SWITCHID: "$SWITCHID"
    },
    on_minus_off: {
      $sum: {
        "$cond": [{
          "$eq": ["$STATUS", "ON"]
        }, "$avgduration", {
          $subtract: [0, "$avgduration"]
        }]
      }
    }
  }
})

输出是:

{
    "_id" : {
        "SWITCHID" : "Z4-W40-SS451A/5"
    },
    "on_minus_off" : -472.0131230555556
}

但预期的输出是:

202.50562416666668-269.5074988888889=-67.00187472222222

【问题讨论】:

  • 请用 ACTUAL 和 EXPECTED 输出更新问题 - 它们的格式甚至不接近
  • @mplungjan 我的文档 swichID 都相同,但状态不同第一个文档“avgduration”:202.50562416666668-第二个文档avgduration“:269.5074988888889 = 67.00187472222222 这是我的预期输出,但我没有得到这个输出任何建议我
  • 请更新问题。您可以编辑和添加可读格式的信息

标签: javascript node.js mongodb mongoose aggregation-framework


【解决方案1】:

我觉得你的情况不对

"$eq": ["$STATUS", "ON"]

应该是

"$eq": ["$STATUS", "LIGHTS ON"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-17
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多