【问题标题】:How to run the following aggregation query using spring-data-mongo?如何使用 spring-data-mongo 运行以下聚合查询?
【发布时间】:2019-02-12 05:49:39
【问题描述】:

我想在 mongo 中使用投影来重塑文档。如何在 spring-data-mongo 中运行以下查询?

db.collection_name.aggregate([
  { $project : { date: { $toDate : {$multiply:['$timestamp',1000]} }, status:1} },
  { $group : { _id : { hour : { $hour: '$date' }} ,
        count : { $sum: 1 } } }
])

结果应该有按小时分组的文档数。

【问题讨论】:

    标签: mongodb spring-data spring-data-mongodb


    【解决方案1】:

    这是一个使用mongoTemplate 可以执行的操作的示例。不过我还没有测试过。

    Document multiplyTime = new Document("$multiply", Arrays.asList("$timestamp", 1000));
    ProjectionOperation project1 = project("status").and(ConvertOperators.ToDate.toDate(multiplyTime)).as("date");
    ProjectionOperation project2 = project().and(DateOperators.Hour.hour("date")).as("hour");
    GroupOperation group = group("hour").count().as("count");
    mongoTemplate.aggregate(Aggregation.newAggregation(project1, project2, group),"yourCOllection", Document.class);
    

    【讨论】:

      猜你喜欢
      • 2020-04-29
      • 2019-10-14
      • 2017-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-11
      • 2014-03-05
      • 1970-01-01
      相关资源
      最近更新 更多