Mongo聚合查询到等效的Spring Mongo数据



我目前正忙于将以下查询转换为springmongo数据代码。

db.getCollection('collectionName'(.agregate([{$match';:{
"_id';:{quot;$in';:〔1186909911111〕}}(},{$project:{behavior_traces:{$filter:{输入:'$behavior_traces',如:'behavior_trace',第二个:{$eq:["$$behavior_trace.event_type",{event_type:"candidateImage"}]}}}
}},{$project:{behavior_traces:{$arrayElemAt:["$behavior_traces",-1]}}}](

我有第一个MatchOperation和第二个Projection,工作如下,但无法添加第三个Projection来获取每个文档的数组的最后一个元素:

private MatchOperation getMatchOperation(List<Integer> candidateUserIds) {
Criteria inCriteria = Criteria.where("_id").in(candidateUserIds);
return match(inCriteria);
}
private ProjectionOperation getFilterProjectOperation() {
return project().and(filter("behavior_traces")
.as("behavior_trace")
.by(valueOf(
"behavior_trace.event_type.event_type")
.equalToValue(
"candidateImage")))
.as("behavior_traces");
}

这是您的代码:

import org.springframework.data.mongodb.core.aggregation.ArrayOperators.ArrayElemAt; 
private ProjectionOperation getArrayProjectOperation() {
return project("")
.and(ArrayElemAt.arrayOf("behavior_traces").elementAt(-1).as("behavior_traces"));
}

private ProjectionOperation getArrayProjectOperation() {
return project("")
.and("behavior_traces").arrayElementAt(-1).as("behavior_traces");
}

最新更新