我有一个像这样的文档:
{
"steps": ["step 1", "step 2"]
}
,我想用这种方式显示我的结果:
{
"steps": [
{"name": "step 1", "index": 1},
{"name": "step 2", "index": 2}
]
}
我使用了一个像这样的投影:
{
"$project": {
"steps": {
$reduce: {
input: "$steps",
initialValue: [],
in: {$concatArrays: [
"$$value",
[{"name": "$$this", "index": {$add: [1, {$size: "$$value"}]}}]
]}
}
}
}
}
,它工作!!也许这不是最好的解决方案,但它是有效的。
我的问题是将此代码转换为Java与Spring-MongoDB。
var reduce = ArrayOperators.arrayOf("steps")
.reduce(
ArrayOperators.arrayOf("$$value").concat( ??? ))
.startingWith(Collections.EMPTY_LIST);
我如何创建一个AggregationExpression映射一个对象与键名称和
?Array reduce的语法如下:
ArrayOperators.Reduce reduce = ArrayOperators.Reduce
.arrayOf("$steps")
.withInitialValue(new ArrayList())
.reduce(ArrayOperators.ConcatArrays.arrayOf(ArrayOperators.Reduce.Variable.VALUE.getTarget())
.concat(ArrayOperators.Reduce.Variable.THIS.getTarget()));