1

Wir haben eine Aggregationsoperation, die in Restheart 1.1.0 funktioniert hat, jetzt aber nicht in 2.0.2. Wir haben Variablen in der Aggregationsoperation verwendet, um die dynamische Codegenerierung zu handhaben. Unten ist ein einfaches Beispiel. Gibt es eine Problemumgehung für dieses Problem? Hierrestheart 2 - Aggregationsfehler

ist die Aggregation Betrieb:

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

Ich mache eine Anfrage an die Aggregation mit Knoten mit den folgenden:

Dies funktioniert:

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

Dies schlägt fehl:

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

Fehler:

{ "_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"}]}} 

Antwort

0

RESTHeart erlaubt es nicht, die Awaren Operatoren enthalten (eine beliebige Taste, die mit $ beginnt).

Dies ist von Entwurf, um den Client zu vermeiden, Logik in die Aggregation zu injizieren und schließlich zu modifizieren.

Denken Sie an den $ lookup-Operator, der verwendet werden könnte, um eingeschränkte Daten zu erkennen ...