Перезапуск 2 - ошибка агрегирования

У нас есть операция агрегации, которая работала в перезапуске 1.1.0, но теперь не в 2.0.2. Мы использовали переменные в операции агрегации для обработки динамического генерации кода. Ниже приведен простой пример. Есть ли решение этой проблемы?

Вот операция агрегации:

 {
      "type" : "pipeline", 
      "uri" : "agg_companies", 
      "stages" : [
          {
              "_$match" : {
                  "_$var" : "filter_query"
              }
          }, 
          {
              "_$group" : {
                  "_id" : "$organization._id", 
                  "name" : {
                      "_$first" : "$organization.name"
                  }
              }
          }, 
          {
              "_$sort" : {
                  "name" : NumberInt(1)
              }
          }
      ]
  }

Я делаю запрос к агрегации, используя узел со следующим:

Это работает:

var avars = {filter_query: {travelerLastName: "Brewer"}};

Это не удается:

var avars = {filter_query: {travelerLastName: {$and: ["Brewer"]}}};

Ошибка:

{ "_links" : { "self" : { "href" : "/foresiteamo/flight/_aggrs/agg_companies2"}} , "http status code" : 400 , "http status description" : "Bad Request" , "message" : "illegal avars paramenter: {\'filter_query\':{\'travelerLastName\':{\'$and\':[\'Brewer\']}}}" , "_embedded" : { "rh:exception" : [ { "exception" : "java.lang.SecurityException" , "exception message" : "aggregation variables cannot include operators"}]}}

1 ответ

RESTHeart не позволяет аварам включать операторы (любой ключ, начинающийся с $).

это сделано для того, чтобы клиент не вводил логику в агрегацию и, в конечном итоге, не изменял ее.

Подумайте об операторе $lookup, который можно использовать для отслеживания ограниченных данных...

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