我想在meteor / MongoDB中汇总数据。我有几千个条目格式如下
{_id: sadsadjhsjdys7ad67as8d, t: 1464162907, prod: 123, sys: xyz}
我想将它们分类到相对日期并聚合prod字段。
我目前有以下
var project = {
"$project" : {
"_id" : 0,
"y" : {
"$year" : {
"$add" : [
new Date(0), {
"$multiply" : [1000, "$t"]
}
]
}
},
"m" : {
"$month" : {
"$add" : [
new Date(0), {
"$multiply" : [1000, "$t"]
}
]
}
},
"d" : {
"$dayOfMonth" : {
"$add" : [
new Date(0), {
"$multiply" : [1000, "$t"]
}
]
}
},
"prod" : "$prod",
"sys" : "$sys"
}
};
var group = {
"$group" : {
"_id" : {
"year" : "$y",
"month" : "$m",
"day" : "$d",
"test" : "$test"
},
sys : "sys",
prod : {
$sum : "$prod"
}
}
};
var result = power_stats.aggregate([match, project, group]);
然而这使我的_id进入[y:2016,m:5,d:25],这是我想要的聚合形式,但是如果我想稍后用日期进行条件查找,它将完全没用有了这些数据。
如何使用MongoDBe聚合保留UNIX日期戳?
答案 0 :(得分:1)
实现这一目标:
t
字段并继续通过管道填充它 - 因此将始终引用oryginal timestamp var group = {
"$group" : {
"_id" : {
"year" : "$y",
"month" : "$m",
"day" : "$d",
"test" : "$test"
},
prod : {
$sum : "$prod"
},
dateTime : {
$addToSet : new Date("$_id.year", "$_id.month", "$_id.day")
}
}
};