Closed
Description
Here is the mongo command I want to write using spring data :
{
$addFields: {
_filteredMetadata: {
$filter: {
input: {
$objectToArray: "$data.metadata",
},
as: "filteredMetadata",
cond: {
$ne: [
"$$filteredMetadata.k",
"rawSamplingDate",
],
},
},
},
},
},
]
Using Spring, i would have done like this :
addFields()
.addField("_filteredMetadata")
.withValue(ArrayOperators
.arrayOf(ObjectOperators.valueOf("data.metadata").toArray())
.filter()
.as("filteredMetadata")
.by(ComparisonOperators.Ne.valueOf("filteredMetadata.k").notEqualToValue("rawSamplingDate")))
.build(),
But filter fails saying :
java.lang.IllegalStateException: Values must not be null
at org.springframework.util.Assert.state(Assert.java:76)
at org.springframework.data.mongodb.core.aggregation.ArrayOperators$ArrayOperatorFactory.filter(ArrayOperators.java:217)
It seems Filter input doesn't support expressions 🤔