首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按时间戳对值进行分组

如何按时间戳对值进行分组
EN

Stack Overflow用户
提问于 2019-11-04 18:14:22
回答 1查看 77关注 0票数 0

对于数据库中的每个实体,我都有带有价格的时间戳数组,我想按时间戳对它们进行分组,并获得该时间戳的平均价格。

我目前正在使用mongoose,我尝试了各种分组依据函数,但我没有找到按每个元素分组的解决方案。

代码语言:javascript
复制
{ 
 _id : "52b632a9e4f2ba13c82ccd23", 
 history-dates : [2019-10-1, 2019-10-2, 2019-10-3, 2019-10-4]
 history-prices : [1000.0, 2000.0, 500.0, 1500.0]
}, 

{ 
 _id : "52b632a9e4f2ba13c82ccd23", 
 history-dates : [2019-10-1, 2019-10-2, 2019-10-3, 2019-10-4]
 history-prices : [2000.0, 3000.0, 1500.0, 2500.0]
}

我想要的结果如下:

代码语言:javascript
复制
date: 2019-10-1
avgPrice : 1500.0

我如何才能做到这一点,并提前感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-11 14:06:01

正如Neil所指出的,你应该稍微改变一下文档结构

因此引入一个array类型字段historicalPrices,其结构为:[{ date: "2019-10-1", price: 1000.0 }]

然后,您可以应用以下查询来获得按日期分组的平均价格

代码语言:javascript
复制
db.mycollection.aggregate([
  { $unwind: "historicalPrices" },
  { $group: { 
      "_id": "$historicalPrices.date",
      avgPrice:{ $avg: "$historicalPrices.price" }
      } 
  }
])
//Result: [{ _id: "2019-10-01", avgPrice: 1500.0 }, ....]

了解有关Aggregation Pipeline$unwind$group$avg的更多信息

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58691268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档