2017-05-05 4 views
0

RESTHeart에 집계 파이프 라인이 있습니다. 어떻게 결과를 정렬 할 수 있습니까?RestHeart 집계 : 결과를 정렬하는 방법?

일반적인 RESTHeart 쿼리에서? sort_by 쿼리 매개 변수를 사용할 수 있습니다. 그러나 집계 쿼리에서이 URL을 URL에 추가 할 때 정렬은 적용되지 않습니다.

또 다른 옵션은 집계 쿼리에 대한 메타 데이터에 정렬 필드를 추가하는 것입니다 - 예를 들어 다음과 같이 :

  { 
       "_$sort" : { 
        "submittedAt" : -1 
       } 
      }, 

... 즉, 상기와 같은 정적으로 지정된 필드에 잘 작동합니다. 그러나 sortField를 변경 가능 (avar와 같은)하고 쿼리 변수에 지정하려고합니다. 이 상황에서 avars를 사용할 방법을 찾지 못했습니다. avars :

   "_$sort" : { 
        "submittedAt" : { 
         "_$var" : "dir" 
        } 
       } 

...을 사용하여 정렬 방향을 지정할 수 있지만 어떻게 REST 요청에서 키를 동적으로 지정할 수 있습니까?

답변

0

당신은 avars aggregation section

avars 어떤 JSON을 할 수있는 설명서를 참조 자세한 내용은 쿼리 매개 변수

GET /db/coll/_aggrs/test_ap?avars={"dir":1} 

, 유일한 제한을 통해 변수를 전달 쿼리 삽입을 피하기 위해 연산자를 전달할 수 없다는 것입니다. 그래서 당신은 당신이 할 수있는 정렬 키를 전달하려면 :

집계

{ "$sort" : { "$var": "sortExpr" } } } 

쿼리

GET /db/coll/_aggrs/test_ap?avars={"sortExpr":{"submittedAt": 1}} 

것을 restheart 3.0 이후, 더 이상 필요하지 연산자에 대한 _ 접두사.

+0

안녕하세요. Andrea. 응답 해 주셔서 감사합니다. 코드는 avars를 전달하는 방법을 보여줍니다. 내가 avars를 전달하는 방법을 이해하지만, 문제는 * key *를 값과 반대로 동적으로 전달하는 방법입니다. 즉, 변경할 필요가있는 * 필드 이름 * 값입니다. 필자의 예에서는 변수로 동적으로 대체하려고합니다. avars는 현재 키가 아닌 값에만 작동한다고 생각합니다. –

+0

안녕하세요. Tom은 answerser을 편집하여 질문을 더 잘 설명합니다. –

관련 문제