У меня есть следующая схема документа:
{
"_id": "23423242",
"props": [
{
"name": "test1",
"valueSet": ["hi", "hello"]
},
{
"name": "test2,
"valueSet": ["morning!", "hola"]
}
],
"description": "some description"
}
У меня есть необработанный JS, работающий так, как я хочу, т. Е.
var greetings = ["hi", "hello", "chao"];
var removeNotMatching = {
"_id": "$_id",
"props": {
"$filter": {
"input": "$props",
"as": "prop",
"cond": {
"$setIsSubset": ["$$prop.valueSet", greetings]
}
}
},
"description": "$description"
};
Как мне перевести это в такие методы, какproject
как часть newAggregation(MyType.class, ....)
Я бы хотел использовать самые последние операторы Spring Data, включая AggregationExpression
.
. Что у меня есть, так это:
List<String> greetings = Arrays.asList("hi", "hello", "chao");
TypedAggregation<MyType> aggregation = newAggregation(MyType.class,
project()
.and("id").as("id")
.and("props")
.filter("prop", SetIsSubset
.arrayAsSet("prop.valueSet")
.isSubsetOf(????)
.as("props")
and("description").as("description"));
Не совсем уверен, что я на правильном пути, и не совсем уверен, как включить список greetings
в агрегацию.
Буду признателен за любую помощь.
Спасибо!