Я не могу выполнить операции map
и reduce
в java mongodb в ProjectionOperation.
У меня есть операция проекта на нативном mongo query
, например:
{
$project: {
data: {
$map: {
input: params.timeArray,
in: {
"key": "$$this",
"value": { "$cond": [{ "$in": ["$$this", "$data.date"] }, "$data", []] }
}
}
}
}
}
И я также хочу выполнить операцию reduce
в другой операции проецирования, например:
{
$project: {
id: 1,
data: { $reduce: { input: "$data", initialValue: [], in: { $concatArrays: ["$$value", "$$this"] } } }
}
}
Я пробовал это:
ProjectionOperation projectionOperation1 = Aggregation.project()
.and(VariableOperators.mapItemsOf("data"/*here, I want to pass timeArray*/)
.as("input")
.andApply(context -> new BasicDBObject("value",
ConditionalOperators.when(where("$$this").in("$data.date"))
.then("$data")
.otherwise(new HashSet<>()))))
.as("data");
Но это не дало мне желаемого результат.
Я использую springboot
версию 1.5.10.RELEASE
Любая помощь будет признательна !!