{
"_id":"5c59c35d8610f702d00e6f70",
"stationId":"2",
"listenerId":"807",
"streamId":"37",
"userAgentId":"7",
"botDefinitionId":"18",
"ipAddress":"50.116.14.48",
"startTime":"2018-02-06T12:51:59.000Z",
"endTime":"2018-02-06T12:53:56.000Z",
"listenLength":"117",
"totalDataUsed":"1433582",
}
{
'_id':{
'year':{
'$year':'$startTime'
},
'week':{
'$week':'$startTime'
},
'dayOfMonth':{
'$dayOfMonth':'$startTime'
},
'month':{
'$month':'$startTime'
},
'hour':{
'$hour':'$startTime'
},
'interval':{
'$subtract':[
{
'$minute':'$startTime'
},
{
'$mod':[
{
'$minute':'$startTime'
},
15
]
}
]
}
},
'count':{
'$sum':1
}
}
然后返回给我以下文档:
_id:{
year:2018 week:15 dayOfMonth:18 month:4 hour:18 interval:45
},
count:9
如何使用GroupOperation在spring-data-mongo中指定form这个聚合?
我能想到的一种方法是在$project阶段调用函数,而不是在$group阶段调用它们。
使用DateOperator类提取像小时、分钟、年等字段。然后将SpEL和Expression用于interval字段,如下所示:
andExpression("minute - minute % 15").as("interval")
这将用小时、间隔、年等字段重塑文档,然后将它们分组在间隔和其他您需要的字段上。
Aggregation agg = Aggregation.newAggregation(
Aggregation.project()
.and(DateOperators.Minute.minute("$timestamp")).as("minute")
.and(DateOperators.Hour.hour("$timestamp")).as("hour")
.and(DateOperators.DayOfMonth.dayOfMonth("$timestamp")).as("dayOfMonth"),
Aggregation.project("hour","dayOfMonth","minute")
.andExpression("minute - minute % 15").as("interval"),
Aggregation.group("hour","dayOfMonth","interval")
.addToSet("hour").as("hour")
.addToSet("dayOfMonth").as("dayOfMonth")
.addToSet("interval").as("interval")
.count().as("count")
);
List<QueryResult> result = mongoTemplate.aggregate(agg, "collection_name", QueryResult.class).getMappedResults();
问题内容: 我需要将表分组为15分钟间隔。我可以这样做: 但是要在图表中显示返回的数据,我还需要插入没有任何数据且当前未出现在我的select语句中的间隔。我该如何插入这些? 问题答案: 用15分钟的增量创建一个带有所有可能时间戳的表,然后从该表向上面的查询进行LEFT JOIN。 如果您知道图表始终涵盖24小时,则只需创建一个数字为0-95的表格,然后为每个条目将其添加到图表的开始时间。
问题内容: 我有一个数据集: 我想基本上在一个小时内“拆分”这些时间间隔,例如: 到目前为止,这是我的代码(该想法的积分发给@DumitrescuBogdan,将通话数据分为15分钟间隔): 后半部分(在“全部合并”之后)不产生任何结果,前半部分产生以下结果: 谢谢,我是初学者。我了解第一部分;坦白地说,我不明白下半场 我愿意接受其他解决方案。 我正在使用MS-Access 2010 问题答案:
问题内容: 我有一个这样的dataFrame,我想每60分钟进行一次分组,然后从06:30开始分组。 我在用: 我得到这个分组: 但我正在寻找这个结果: 我如何告诉该功能以6小时30分开始以一小时为间隔进行分组? 如果 .groupby(pd.TimeGrouper(freq =‘60Min’)) 无法完成此 操作 ,最好的方法是怎么做? 致敬并非常感谢 问题答案: 使用会同中的参数。 指定将使时
我得到的数据集如下所示: 我想按时间字段对其进行分组,并获取每个时间间隔的MAX(openBid),并拥有最后5个间隔(在本例中为5分钟)。我使用这个查询: 结果如下: 我遇到的问题是,随着时间的推移,结果集中第一条记录的计数从1增加到5。在这个例子中,它是3。我希望我的查询在所有时间间隔内都有相同数量的记录。我认为问题是GROUP BY准时从集合的第一条记录开始。由于我正在执行ORDER BY
问题内容: 我有一个包含datetime列和一些其他列的表。datetime列表示发生的事件。它可以包含一个时间(事件在那个时间发生)或NULL(事件没有发生) 我现在想计算在特定时间间隔(15分钟)内发生的记录数,但是不知道该怎么做。 例子: 现在,我想创建一个查询,该查询将创建类似于以下内容的结果集: 这在SQL中可能吗,或者有人可以建议我可以使用哪些其他工具?(例如,将数据导出到电子表格程序
问题内容: 我正在尝试生成时间间隔数组。例如: 它应该在祖鲁时间直到每天晚上9点创建上述元素。 也应该为下一个和后一天生成元素 起始时间从7:00 am-Ed time 9:00 pm,如果current_time> start_time,则生成15分钟的时间间隔数组,直到9 pm。然后为第二天和第二天生成2。间隔应该是这样的7:00、7:15 ..不在7:12、8:32 问题答案: 这是供您使用