Mongo 聚合查询等同于 Spring Mongo 数据
Mongo Aggregation query to equivalent Spring Mongo Data
我目前无法将以下查询转换为 spring mongo 数据代码。
db.getCollection('collectionName').aggregate([ { "$match": {
"_id": { "$in": [11869099,11111] } }}, { $project: {
behavior_traces: {$filter: {
input: '$behavior_traces',
as: 'behavior_trace',
cond: {$eq: ['$$behavior_trace.event_type',{event_type:"candidateImage"}]}
}}
}}, { $project: {
behavior_traces:{ $arrayElemAt: [ "$behavior_traces", -1 ] }
}} ])
我有第一个 MatchOperation 和第二个投影,如下所示,但无法添加第三个投影来获取每个文档数组的最后一个元素:
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");
}
我目前无法将以下查询转换为 spring mongo 数据代码。
db.getCollection('collectionName').aggregate([ { "$match": {
"_id": { "$in": [11869099,11111] } }}, { $project: { behavior_traces: {$filter: { input: '$behavior_traces', as: 'behavior_trace', cond: {$eq: ['$$behavior_trace.event_type',{event_type:"candidateImage"}]} }}
}}, { $project: { behavior_traces:{ $arrayElemAt: [ "$behavior_traces", -1 ] } }} ])
我有第一个 MatchOperation 和第二个投影,如下所示,但无法添加第三个投影来获取每个文档数组的最后一个元素:
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");
}