MongoDB聚合查询的Spring数据

燃料油

我正在努力在Spring Data MongoDB中翻译此mongoDB查询:

db.applicates.aggregate(
   [
   {
      "$match": {
        "claimantCategory": 1
      }
    },
      {
        $group : {
           _id : { month: { $month: "$claimDate" }, day: { $dayOfMonth: "$claimDate" }, year: { $year: "$claimDate" } },
       count: { $sum: 1 }
    }
  }
   ]
)

我已经尝试过了:

TypedAggregation<Applicate> aggregation = newAggregation(Applicate.class,
            match(Criteria.where("claimantCategory").is(claimantCategory)),
            project("claimDate")
                    .andExpression("dayOfMonth("+"\""+"claimDate"+"\""+")").as("day")
                    .andExpression("month(claimDate)").as("month")
                    .andExpression("year(claimDate)").as("year"),
            group(fields().and("day").and("month").and("year"))
                    .count().as("count"));
AggregationResults<ClaimsAggregator> groupResults = mongoOperations.aggregate(aggregation, ClaimsAggregator.class);

但是它失败并发生以下异常:无法从BSON类型的String转换为Date

我的Applicate.class:

public class Applicate {

@Id
private String id;

private int claimId;

@DateTimeFormat (iso = DateTimeFormat.ISO.DATE)
private Date claimDate;

private int codeOfForm;
private String claimStatus;
private String fio;
private int claimantCategory;
private int serviceCode;
private String subserviceName;
private String departmentName;
//getter,setters, constructor
}

ClaimsAggregator.class:

public class ClaimsAggregator {
private String claimDate;
private int count;
....
}
燃料油

我找到了答案!如@chridam所建议,您需要替换该行

.andExpression("dayOfMonth("+"\""+"claimDate"+"\""+")").as("day")

有了这个

.andExpression("dayOfMonth(claimDate)").as("day")

现在您需要添加

.first("claimDate").as("claimDate")

到线

group(fields().and("day").and("month").and("year"))

最终代码:

TypedAggregation<Applicate> aggregation = newAggregation(Applicate.class,
            match(Criteria.where("claimantCategory").is(claimantCategory)),
            project("claimDate")
                    .andExpression("dayOfMonth(claimDate)").as("day")
                    .andExpression("month(claimDate)").as("month")
                    .andExpression("year(claimDate)").as("year"),
            group(fields().and("day").and("month").and("year")).first("claimDate").as("claimDate")
                    .count().as("count"));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MongoDb聚合查询转换为Spring数据

来自分类Dev

使用 spring 的 MongoDB 聚合查询

来自分类Dev

使用Spring数据mongodb在MongoTempate中进行聚合查询的执行计划

来自分类Dev

MongoDB聚合查询与不在

来自分类Dev

MongoDB聚合查询$ lookup

来自分类Dev

Mongodb结合聚合查询

来自分类Dev

mongodb聚合查询结果

来自分类Dev

将mongodb聚合查询转换为Java / Kotlin Spring Data

来自分类Dev

大数据查询mongodb,聚合,单个索引或复合索引

来自分类Dev

平均堆栈:如何从 MongoDB 聚合查询访问数据?

来自分类Dev

Spring数据等效于MongoDB中的以下聚合操作

来自分类Dev

从String到ObjectId的Spring数据MongoDb聚合查找

来自分类Dev

MongoDB Spring数据,复杂条件下的最大聚合

来自分类Dev

Spring数据MongoDB聚合中的属性始终为空

来自分类Dev

MongoDB聚合-分组数据

来自分类Dev

MongoDB的Spring数据中的非阻塞查询?

来自分类Dev

mongodb查询带有spring数据的键值

来自分类Dev

MongoDB 聚合查询 - 组聚合字段错误

来自分类Dev

MongoDB聚合查询结果的计数

来自分类Dev

MongoDB聚合框架:组查询

来自分类Dev

MongoDB聚合-查询对象数组

来自分类Dev

MongoDB聚合按查询分组

来自分类Dev

用MongodB编写聚合查询

来自分类Dev

MongoDB排序:等效聚合查询

来自分类Dev

MongoDB聚合查询,查找失败

来自分类Dev

MongoDB,Flask与$ unwind查询聚合

来自分类Dev

MongoDB聚合查询问题

来自分类Dev

MongoDB查询多个值的聚合

来自分类Dev

RapidMiner中的MongoDB聚合查询