Фильтр агрегации Spring mongo

Я использую Spring для выполнения запроса согласования на mongodb. я бы добавил фильтр для моей проекции. поэтому я хочу написать код потока с помощью пружины

db.mycollection.aggregate( [
  {$match: {"_id" : { "$binary" : "sU7XGDnFYz53KHVhP+sZlQ= = ", "$type" : "03" } }},
  {$project: {
         myarray: {
            $filter: {
               input: "$myarray",
               as: "item",
               cond: { $in: [ "$$item._id", ["JshGyMImCsSceiPqqCCinlAtTrIkwvlx", "0000022211"] ] }
            }
         },
         "colomn" :1,

          myarray2: {
            $filter: {
               input: "$myarray2",
               as: "item",
               cond: { $in: [ "$$item.name", ["name1", "name2"] ] }
            }
         }
      }
  }
] );

Моя попытка писать с помощью Spring Mongo

    /*<arrayname,list ids>*/
    Map<String, List<Object>> arraysAggregationMap = new HashMap<>();

    ...


ProjectionOperation projectionOperation = project();

    //adding projections

    for (String f: fields) {
      projectionOperation = projectionOperation.and(f).as(f);
    }

// filters
    for (Entry<String, List<Object>> entry: arraysAggregationMap.entrySet()
        ) {
      projectionOperation =  projectionOperation.and(filter(entry.getKey()).as("item").by(
          in("item"+"._id",entry.getValue()).toString())).as(entry.getKey());

    }
    Aggregation aggregation;

    if (fields.size()>0 ||arraysAggregationMap.size() >0) aggregation = newAggregation(match(creteria),projectionOperation);
    else  aggregation = newAggregation(match(creteria));


AggregationResults results = mongoOperation.aggregate(aggregation,entityClass,Document.class);

Но $filter не работает.

удалось ли вам решить эту проблему?

Faraz 29.09.2018 18:46

проверить -> stackoverflow.com/questions/46767750/…

Kaustubh 06.10.2018 18:21
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
1 066
0

Другие вопросы по теме