Java 在mongodb异步驱动程序中按小时聚合

Java 在mongodb异步驱动程序中按小时聚合,java,mongodb,asynchronous,driver,Java,Mongodb,Asynchronous,Driver,如何在mongodb异步驱动程序()中按小时聚合 我的集合中有一个ISODate字段 [ { name = "a", date = ISODate(...)}, { name = "b", date = ISODate(...)}, ... ] 我想显示一个每小时文档发生的图表。 在MongoDB控制台中。我会这样做: db.mycollection.aggregate([{$group : {_id : {day:{ $hour : "$date"}}, count: { $s

如何在mongodb异步驱动程序()中按小时聚合

我的集合中有一个ISODate字段

[
  { name = "a", date = ISODate(...)},
  { name = "b", date = ISODate(...)},
  ...
] 
我想显示一个每小时文档发生的图表。 在MongoDB控制台中。我会这样做:

db.mycollection.aggregate([{$group : {_id : {day:{ $hour : "$date"}}, count: { $sum: 1 }}}])
但我被驱动程序api卡住了:

 import static com.allanbank.mongodb.builder.AggregationGroupField.set;
 import static com.allanbank.mongodb.builder.AggregationGroupId.id;

 Aggregate.Builder builder = new Aggregate.Builder();
 builder.group(id().add(???), set("pop").sum("pop"))

你需要利用这个班。使用
group
方法,该方法将
Builder
AggregationGroupField
数组作为输入

public Aggregate.Builder group(AggregationGroupId.Builder id,
                      AggregationGroupField... aggregations)
构建
hour
表达式并将其作为id传递

    Builder hour = new Builder();
    hour.add(Expressions.set("day",Expressions.hour(Expressions.field("date"))));
    Aggregate.Builder builder = Aggregate.builder();
    builder.group(
       hour,
       AggregationGroupField.set("pop").sum("pop")
      );
    MongoIterator<Document> result = col.aggregate(builder);
    while(result.hasNext())
    {
        System.out.println(result.next());
    };
Builder hour=new Builder();
hour.add(Expressions.set(“day”)、Expressions.hour(Expressions.field(“date”));
Aggregate.Builder=Aggregate.Builder();
建筑商集团(
小时,
AggregationGroupField.set(“pop”).sum(“pop”)
);
MongoIterator结果=集合(生成器);
while(result.hasNext())
{
System.out.println(result.next());
};