如何获得蒙戈中值之和大于420的日子

发布于 2025-02-03 13:04:33 字数 3868 浏览 2 评论 0原文

我正在尝试按白天总结“ emsion_co2”值。为了知道在几天的几天高于420,但我的查询不起作用。

这是数据库

 db.test_sensores.insert([{"timestamp":"2020-07-01T00:00:00Z","dia":01,"sensor_id":1,"location_id":1,"medidas":[{"tipo_medida":"Temperatura","valor":16.61,"unidad":"ºC"},{"tipo_medida":"Humedad_relativa","valor":83.74,"unidad":"%"}]},
{"timestamp":"2020-07-01T00:00:00Z","dia":01,"sensor_id":2,"location_id":1,"medidas":[{"tipo_medida":"Emision_CO2","valor":1.572,"unidad":"gCO2/m2"},{"tipo_medida":"Consumo_electrico","valor":0.00188,"unidad":"kWh/m2"}]},
{"timestamp":"2020-07-01T00:15:00Z","dia":01,"sensor_id":1,"location_id":1,"medidas":[{"tipo_medida":"Temperatura","valor":15.75,"unidad":"ºC"},{"tipo_medida":"Humedad_relativa","valor":83.08,"unidad":"%"}]},
{"timestamp":"2020-07-01T00:15:00Z","dia":01,"sensor_id":2,"location_id":1,"medidas":[{"tipo_medida":"Emision_CO2","valor":1.626,"unidad":"gCO2/m2"},{"tipo_medida":"Consumo_electrico","valor":0.00146,"unidad":"kWh/m2"}]},
{"timestamp":"2020-07-10T00:30:00Z","dia":10,"sensor_id":1,"location_id":1,"medidas":[{"tipo_medida":"Temperatura","valor":14.08,"unidad":"ºC"},{"tipo_medida":"Humedad_relativa","valor":90.05,"unidad":"%"}]},
{"timestamp":"2020-07-10T00:30:00Z","dia":10,"sensor_id":2,"location_id":1,"medidas":[{"tipo_medida":"Emision_CO2","valor":1.614,"unidad":"gCO2/m2"},{"tipo_medida":"Consumo_electrico","valor":0.00173,"unidad":"kWh/m2"}]},
{"timestamp":"2020-07-01T00:45:00Z","dia":01,"sensor_id":1,"location_id":1,"medidas":[{"tipo_medida":"Temperatura","valor":10.62,"unidad":"ºC"},{"tipo_medida":"Humedad_relativa","valor":92.27,"unidad":"%"}]},
{"timestamp":"2020-07-01T00:45:00Z","dia":01,"sensor_id":2,"location_id":1,"medidas":[{"tipo_medida":"Emision_CO2","valor":1.59,"unidad":"gCO2/m2"},{"tipo_medida":"Consumo_electrico","valor":0.00196,"unidad":"kWh/m2"}]},
{"timestamp":"2020-07-01T00:00:00Z","dia":01,"sensor_id":1,"location_id":2,"medidas":[{"tipo_medida":"Temperatura","valor":22.08,"unidad":"ºC"},{"tipo_medida":"Humedad_relativa","valor":34.92,"unidad":"%"}]},
{"timestamp":"2020-07-01T00:00:00Z","dia":01,"sensor_id":2,"location_id":2,"medidas":[{"tipo_medida":"Emision_CO2","valor":2.055,"unidad":"gCO2/m2"},{"tipo_medida":"Consumo_electrico","valor":0.00269,"unidad":"kWh/m2"}]},
{"timestamp":"2020-07-01T00:15:00Z","dia":01,"sensor_id":1,"location_id":2,"medidas":[{"tipo_medida":"Temperatura","valor":21.12,"unidad":"ºC"},{"tipo_medida":"Humedad_relativa","valor":37.7,"unidad":"%"}]},
{"timestamp":"2020-07-01T00:15:00Z","dia":01,"sensor_id":2,"location_id":2,"medidas":[{"tipo_medida":"Emision_CO2","valor":2.102,"unidad":"gCO2/m2"},{"tipo_medida":"Consumo_electrico","valor":0.00272,"unidad":"kWh/m2"}]},
{"timestamp":"2020-07-10T00:30:00Z","dia":10,"sensor_id":1,"location_id":2,"medidas":[{"tipo_medida":"Temperatura","valor":24.26,"unidad":"ºC"},{"tipo_medida":"Humedad_relativa","valor":52.52,"unidad":"%"}]},
{"timestamp":"2020-07-10T00:30:00Z","dia":10,"sensor_id":2,"location_id":2,"medidas":[{"tipo_medida":"Emision_CO2","valor":2.023,"unidad":"gCO2/m2"},{"tipo_medida":"Consumo_electrico","valor":0.00255,"unidad":"kWh/m2"}]},
{"timestamp":"2020-07-01T00:45:00Z","dia":01,"sensor_id":1,"location_id":2,"medidas":[{"tipo_medida":"Temperatura","valor":24.51,"unidad":"ºC"},{"tipo_medida":"Humedad_relativa","valor":34.1,"unidad":"%"}]},
{"timestamp":"2020-07-01T00:45:00Z","dia":01,"sensor_id":2,"location_id":2,"medidas":[{"tipo_medida":"Emision_CO2","valor":1.957,"unidad":"gCO2/m2"},{"tipo_medida":"Consumo_electrico","valor":0.00215,"unidad":"kWh/m2"}]}])
 

,下一个查询是我正在尝试的内容,但是结果是错误的,因为没有显示总和,只出现在0中。

db.test_sensores.aggregate([{$match:{'medidas.tipo_medida':'Emision_CO2'}},{$group:{_id:'$dia', acumulado_emisiones_CO2:{$sum:'$medidas.0.valor'}}}])

在我的查询中,缺少如何找到emision_co2 value> 420我也在手动思考,但是如果有一种自动化方式,请告诉我。谢谢

I'm trying to sum the 'emsion_co2' values by day. in order to know in what days the value is higher than 420, but my query is not working.

this is the database

 db.test_sensores.insert([{"timestamp":"2020-07-01T00:00:00Z","dia":01,"sensor_id":1,"location_id":1,"medidas":[{"tipo_medida":"Temperatura","valor":16.61,"unidad":"ºC"},{"tipo_medida":"Humedad_relativa","valor":83.74,"unidad":"%"}]},
{"timestamp":"2020-07-01T00:00:00Z","dia":01,"sensor_id":2,"location_id":1,"medidas":[{"tipo_medida":"Emision_CO2","valor":1.572,"unidad":"gCO2/m2"},{"tipo_medida":"Consumo_electrico","valor":0.00188,"unidad":"kWh/m2"}]},
{"timestamp":"2020-07-01T00:15:00Z","dia":01,"sensor_id":1,"location_id":1,"medidas":[{"tipo_medida":"Temperatura","valor":15.75,"unidad":"ºC"},{"tipo_medida":"Humedad_relativa","valor":83.08,"unidad":"%"}]},
{"timestamp":"2020-07-01T00:15:00Z","dia":01,"sensor_id":2,"location_id":1,"medidas":[{"tipo_medida":"Emision_CO2","valor":1.626,"unidad":"gCO2/m2"},{"tipo_medida":"Consumo_electrico","valor":0.00146,"unidad":"kWh/m2"}]},
{"timestamp":"2020-07-10T00:30:00Z","dia":10,"sensor_id":1,"location_id":1,"medidas":[{"tipo_medida":"Temperatura","valor":14.08,"unidad":"ºC"},{"tipo_medida":"Humedad_relativa","valor":90.05,"unidad":"%"}]},
{"timestamp":"2020-07-10T00:30:00Z","dia":10,"sensor_id":2,"location_id":1,"medidas":[{"tipo_medida":"Emision_CO2","valor":1.614,"unidad":"gCO2/m2"},{"tipo_medida":"Consumo_electrico","valor":0.00173,"unidad":"kWh/m2"}]},
{"timestamp":"2020-07-01T00:45:00Z","dia":01,"sensor_id":1,"location_id":1,"medidas":[{"tipo_medida":"Temperatura","valor":10.62,"unidad":"ºC"},{"tipo_medida":"Humedad_relativa","valor":92.27,"unidad":"%"}]},
{"timestamp":"2020-07-01T00:45:00Z","dia":01,"sensor_id":2,"location_id":1,"medidas":[{"tipo_medida":"Emision_CO2","valor":1.59,"unidad":"gCO2/m2"},{"tipo_medida":"Consumo_electrico","valor":0.00196,"unidad":"kWh/m2"}]},
{"timestamp":"2020-07-01T00:00:00Z","dia":01,"sensor_id":1,"location_id":2,"medidas":[{"tipo_medida":"Temperatura","valor":22.08,"unidad":"ºC"},{"tipo_medida":"Humedad_relativa","valor":34.92,"unidad":"%"}]},
{"timestamp":"2020-07-01T00:00:00Z","dia":01,"sensor_id":2,"location_id":2,"medidas":[{"tipo_medida":"Emision_CO2","valor":2.055,"unidad":"gCO2/m2"},{"tipo_medida":"Consumo_electrico","valor":0.00269,"unidad":"kWh/m2"}]},
{"timestamp":"2020-07-01T00:15:00Z","dia":01,"sensor_id":1,"location_id":2,"medidas":[{"tipo_medida":"Temperatura","valor":21.12,"unidad":"ºC"},{"tipo_medida":"Humedad_relativa","valor":37.7,"unidad":"%"}]},
{"timestamp":"2020-07-01T00:15:00Z","dia":01,"sensor_id":2,"location_id":2,"medidas":[{"tipo_medida":"Emision_CO2","valor":2.102,"unidad":"gCO2/m2"},{"tipo_medida":"Consumo_electrico","valor":0.00272,"unidad":"kWh/m2"}]},
{"timestamp":"2020-07-10T00:30:00Z","dia":10,"sensor_id":1,"location_id":2,"medidas":[{"tipo_medida":"Temperatura","valor":24.26,"unidad":"ºC"},{"tipo_medida":"Humedad_relativa","valor":52.52,"unidad":"%"}]},
{"timestamp":"2020-07-10T00:30:00Z","dia":10,"sensor_id":2,"location_id":2,"medidas":[{"tipo_medida":"Emision_CO2","valor":2.023,"unidad":"gCO2/m2"},{"tipo_medida":"Consumo_electrico","valor":0.00255,"unidad":"kWh/m2"}]},
{"timestamp":"2020-07-01T00:45:00Z","dia":01,"sensor_id":1,"location_id":2,"medidas":[{"tipo_medida":"Temperatura","valor":24.51,"unidad":"ºC"},{"tipo_medida":"Humedad_relativa","valor":34.1,"unidad":"%"}]},
{"timestamp":"2020-07-01T00:45:00Z","dia":01,"sensor_id":2,"location_id":2,"medidas":[{"tipo_medida":"Emision_CO2","valor":1.957,"unidad":"gCO2/m2"},{"tipo_medida":"Consumo_electrico","valor":0.00215,"unidad":"kWh/m2"}]}])
 

And the next query is what I was trying, but the result is wrong because there is not showing the sum, just appear in 0 the values.

db.test_sensores.aggregate([{$match:{'medidas.tipo_medida':'Emision_CO2'}},{$group:{_id:'$dia', acumulado_emisiones_CO2:{$sum:'$medidas.0.valor'}}}])

In my query is missing how to find the days where emision_co2 value > 420 too, I was thinking manually but if there is an automated way, please let me know. Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

∝单色的世界 2025-02-10 13:04:33

不确定为什么您尝试通过DIA

  1. $ MATD
  2. $ set - set timestamp 日期对象,medidas_emision_co2_valor用于总和medidas中的所有值$降低
  3. $ group - 按日期,月份和年度组成timestamp,然后总和medidas_emision_co2_valor值值为acumulado_emisiones_co2
  4. $ match - 用acumulado_emisiones_co2过滤文档大于($ gt)420。
db.test_sensores.aggregate([
  {
    $match: {
      "medidas.tipo_medida": "Emision_CO2"
    }
  },
  {
    $set: {
      timestamp: {
        $toDate: "$timestamp"
      },
      medidas_Emision_CO2_valor: {
        $reduce: {
          input: {
            $filter: {
              input: "$medidas",
              cond: {
                $eq: [
                  "$this.tipo_medida",
                  "Emision_CO2"
                ]
              }
            }
          },
          initialValue: 0,
          in: {
            $sum: [
              "$value",
              "$this.valor"
            ]
          }
        }
      }
    }
  },
  {
    $group: {
      _id: {
        day: {
          "$dayOfMonth": "$timestamp"
        },
        month: {
          "$month": "$timestamp"
        },
        year: {
          $year: "$timestamp"
        }
      },
      acumulado_emisiones_CO2: {
        $sum: "$medidas_Emision_CO2_valor"
      }
    }
  },
  {
    $match: {
      "acumulado_emisiones_CO2_valor": {
        $gt: 420
      }
    }
  }
])

样本mongo playground

Unsure why you attempt to group by dia,

  1. $match
  2. $set - Set timestamp to Date object, medidas_Emision_CO2_valor for sum all the values in medidas array by filtering ($filter) the document with tipo_medida is "Emision_CO2" via $reduce.
  3. $group - Group by date, month, and year of timestamp and sum the medidas_Emision_CO2_valor values as acumulado_emisiones_CO2.
  4. $match - Filter the documents with acumulado_emisiones_CO2 is greater than ($gt) 420.
db.test_sensores.aggregate([
  {
    $match: {
      "medidas.tipo_medida": "Emision_CO2"
    }
  },
  {
    $set: {
      timestamp: {
        $toDate: "$timestamp"
      },
      medidas_Emision_CO2_valor: {
        $reduce: {
          input: {
            $filter: {
              input: "$medidas",
              cond: {
                $eq: [
                  "$this.tipo_medida",
                  "Emision_CO2"
                ]
              }
            }
          },
          initialValue: 0,
          in: {
            $sum: [
              "$value",
              "$this.valor"
            ]
          }
        }
      }
    }
  },
  {
    $group: {
      _id: {
        day: {
          "$dayOfMonth": "$timestamp"
        },
        month: {
          "$month": "$timestamp"
        },
        year: {
          $year: "$timestamp"
        }
      },
      acumulado_emisiones_CO2: {
        $sum: "$medidas_Emision_CO2_valor"
      }
    }
  },
  {
    $match: {
      "acumulado_emisiones_CO2_valor": {
        $gt: 420
      }
    }
  }
])

Sample Mongo Playground

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文