You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB查询location:1所有日期22点Emision_CO2平均值问题排查

问题排查与修复方案

原查询存在的错误

  • 字段名拼写错误:$project阶段将medidas错写为me-didas,导致后续所有阶段无法读取测量数据
  • 多余的日期类型转换:文档中timestamp本身已经是ISODate类型,不需要调用$dateFromString做转换,反而可能触发类型错误
  • 小时值匹配错误:$hour运算符返回24小时制数值,你要统计的22点(10pm)对应值为22,原语句写的10对应的是上午10点,完全不符合需求
  • 错误截取数组内容:原语句用$slice: ["$medidas", -1]取数组最后一个元素,但Emision_CO2不一定在数组末尾,会直接过滤掉有效数据
  • 取值字段名错误:测量值字段是valor,原语句$avg阶段写的valores拼写错误,且未处理数组结构,无法正确读取数值

正确的聚合查询

db.datos_sensores2.aggregate([
  // 第一步先过滤点位,缩小数据范围,提升查询性能
  { $match: { location_id: 1 } },
  // 拆分medidas数组,把每个测量项拆成独立文档
  { $unwind: "$medidas" },
  // 过滤出仅包含CO2排放的测量项
  { $match: { "medidas.tipo_medida": "Emision_CO2" } },
  // 提取小时字段,过滤22点的数据
  { $addFields: { Hora: { $hour: "$timestamp" } } },
  { $match: { Hora: 22 } },
  // 分组计算平均值
  { $group: { _id: null, Avg_Emision_CO2: { $avg: "$medidas.valor" } } }
])

内容的提问来源于stack exchange,提问作者Gaby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:06:00