Java 在mongodb异步驱动程序中按小时聚合
如何在mongodb异步驱动程序()中按小时聚合 我的集合中有一个ISODate字段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
[
{ 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());
};