Spring MongoDB:将string-array映射到Object-Array



我有一个像这样的文档:

{
"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()));

最新更新