0
我和翻譯在Spring數據的MongoDB MongoDB的這種掙扎查詢:春數據MongoDB的聚集查詢
db.applicates.aggregate(
[
{
"$match": {
"claimantCategory": 1
}
},
{
$group : {
_id : { month: { $month: "$claimDate" }, day: { $dayOfMonth: "$claimDate" }, year: { $year: "$claimDate" } },
count: { $sum: 1 }
}
}
]
)
我tryed這一點:
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);
但它失敗例外:可以「T從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;
....
}
替換行'.andExpression( 「請將dayOfMonth(」 + 「\」 「+」 claimDate 「+」 \ 「」 + 「)」)。作爲( 「日」)'與此'.andExpression( 「請將dayOfMonth(claimDate)」)。如( 「天」)'。 – chridam
@chridam,謝謝你的建議。剛剛測試過,現在它在日期字段中返回null。什麼可能導致? – MoOFueL
不太確定,可能是某些沒有'claimDate'字段的文檔? – chridam