Я хочу преобразовать следующий код в код mongodb весенних данных.
[
{
$addFields: {
children: {
$reduce: {
input: "$children",
initialValue: {
level: -1,
presentChild: [],
prevChild: []
},
in: { $concat : ["$$value", "$$this"] }
}
}
}
}
]
Я попробовал следующее:
val agg = newAggregation(
Aggregation.addFields()
.addField("children")
.withValueOf(
ArrayOperators.Reduce.arrayOf("children").withInitialValue(
mapOf(
"level" to -1,
"presentChild" to emptyList<Any>(),
"prevChild" to emptyList<Any>()
)
)
).build()
)
выход:
[
{
$addFields: {
children: {
val$initialValue: {
level: -1,
presentChild: [],
prevChild: []
}
}
}
}
]
Это не ожидаемый результат.
Я искал в сети, но ничего не нашел.
Что я должен делать?
🤔 А знаете ли вы, что...
MongoDB может использоваться для анализа больших данных с помощью интеграции с Apache Spark...
В вашем запросе и коде Java отсутствует выражение in
. Это должно выглядеть примерно так.
Aggregation.addFields().addField("children")
.withValueOf(
ArrayOperators.Reduce.arrayOf("children")
.withInitialValue(<initialValue>)
.reduce(StringOperators.Concat.valueOf(ArrayOperators.Reduce.Variable.VALUE.getTarget())
.concat(ArrayOperators.Reduce.Variable.THIS.getTarget())
)
).build();
Замените заполнители соответствующими начальными значениями и выражениями сокращения.