gpt4 book ai didi

node.js - Mongoose:按月分组并带有时间戳

转载 作者:太空宇宙 更新时间:2023-11-04 02:59:02 25 4
gpt4 key购买 nike

如何按月分组并计算 Mongoose 数量的平均值,仅包含字段时间戳?


{
“时间戳”:1234567890,
“数量”:3
},
{
“时间戳”:09876543322,
“数量”:5
}

我想知道每个月的平均数量。

最佳答案

如果您的“时间戳”字段是日期类型的值,那么您可以使用aggregation framework 中的 $month 投影运算符抢时间戳中的月份,然后按以下方式分组:

collection.aggregate([
// Grab the month of the timestamp
{$project: {"qty":1, "month":{$month: "$timestamp"}}},
// Find average for each month
{$group: {"_id":"$month", "avg_qty":{$avg:"$qty"}}}
])

如果时间戳只是一个数字,您可以使用 map-reduce 。某物与此类似:

var o = {};
// Get the month and qty for each document, grouping into months
o.map = function() { emit( (new Date(this.timestamp)).getMonth(), this.qty); };
// Get the average qty for each month
o.reduce = function(month, quants) { return Array.sum(quants)/quants.length; };

collection.mapReduce(o, function(err, results) {
console.log(results);
});

关于node.js - Mongoose:按月分组并带有时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18814419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com