我需要在Morphia中复制这样的聚合
db.getCollection('forecasting').aggregate(
[
{
$match:{
....
}
},
{
$group: {
_id:{id:"$id", date:"$date", hour:{$hour:"$date"}},
property1: {$sum:"$property1"},
property2: {$sum:"$property2"}
}
}
])
但是我似乎无法在Morphia中复制它,特别是hour:{$hour:"$date"}
组。
如果我对该字段进行投影,将生成以下内容:"hour" : "$date"
,但是我需要生成$hour
运算符。
Group idGroup = Group.grouping("_id",
Projection.projection(ID_FIELD, ID_FIELD),
Projection.projection(DATE_FIELD, DATE_FIELD),
Projection.projection("hour", DATE_FIELD);
mongoDataStore.createAggregation(XXX.class)
.match(query)
.group(idGroup);
如果我将日期组添加为另一个组,例如:
mongoDataStore.createAggregation(XXX.class)
.match(query)
.group(idGroup,dateGroup)
我收到以下错误:
命令失败,错误40234(Location40234):服务器上的“ $ hour字段必须是累加器对象”
答案 0 :(得分:0)
我在这个问题Aggregation by date in Morphia
中找到了解决方案您必须使用接受多个Group.id
的{{1}}方法,以便可以使用Groups
来应用Accumulator
运算符