1

restheart 1.1.0에서 작동하는 집계 연산이 있지만 2.0.2에서는 작동하지 않습니다. 동적 코드 생성을 처리하기 위해 집계 연산에서 변수를 사용했습니다. 다음은 간단한 예입니다. 이 문제를 해결할 수있는 방법이 있습니까? 여기 restheart 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"}]}} 

답변

0

RESTHeart는 avars가 ($로 시작하는 키) 연산자를 포함 할 수 없습니다.

클라이언트가 집계에 논리를 삽입하고 결국 수정하지 않도록 설계된 것입니다.

제한된 데이터를 스누핑하는 데 사용될 수있는 $ 검색 연산자에 대해 생각해보십시오.