Проект Spring Data MongoDB $ с $ filter и $ setIsSubset составом агрегации - PullRequest
0 голосов
/ 10 мая 2019

У меня есть следующая схема документа:

{
  "_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 в агрегацию.

Буду признателен за любую помощь.

Спасибо!

...