spring-projects / spring-projects/spring-data-mongodb
Create array from field in update pipeline
@christophstrobl is already working on this.
Since Jan 13, 2025.
- Dominant language
- Java
- Stars
- 1.7k
- Forks
- 1.1k
- PR merge metrics
- No merged PRs in 30d
Description
I would like to concat an array with another field. If I use normal update then I can use $push operator but in pipeline update I have to use $concatArrays. The problem is that I have to create array from a field reference but it is not possible because input string is replaced by just a field reference.
For example I have document:
{
"myArray": ["something"],
"myField": "else"
}
and as result I want to have:
{
"myArray": ["something", "else"]
}
I want to run this MongoDB Update pipeline:
db.getCollection("myCollection").update({}, [
{ "$set": { myArray: {"$concatArrays": ["$myArray", [ "$myField" ] ]} }
])
I tried to rewrite it to:
.set("myArray").toValue(ArrayOperators.ConcatArrays.arrayOf("myArray").concat("[\"$myField\"]"))
but it is translated to:
{ "$set" : { "myArray" : { "$concatArrays" : ["$myArray", "$myField\"]"]}}}
I would use custom AggregationExpresion but it has to return Document but this is unfortunately array.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.