2017-11-09 6 views
0

나는 아래 aggrigate에 대한 쿼리를해야합니다, 집계 쿼리가 작동하지 않습니다 : 인수가 집계 파이프 라인 운영자

ResearchPapers.aggregate([ 
    { 
    $match: params 
}, 
{ 
$group: { 
    _id: "$pmid" 
}, 
"Title": { 
    "$first": "$Title" 
}, 
"url": { 
    "$first": "$url" 
}, 
"year": { 
    "$first": "$year" 
}, 
"month": { 
    "$first": "$month" 
}, 
"day": { 
    "$first": "$day" 
} 
}, 
{ 
$sort: { 
    year: -1, 
    month: -1, 
    date: -1 
    } }]).exec(function(cerr, records){ 
    if(cerr){ 
    return console.log(cerr); 
    } 
}); 

내 쿼리를 실행

, 나는

Error: Arguments must be aggregate pipeline operators 

`로 오류를 얻고있다 나는 솔을 찾을 수 없으며 노드 js와 몽구스에 익숙하지 않다. 아무도 나에게 도움을 제안 할 수는 없지. 고마워.

+0

정확히 무엇을하고 싶은지 알려주십시오. –

답변

0

중괄호가 잘못되어 $ group 개체를 일찍 종료합니다. 세 x 째 정렬 술어도 존재하지 않는 필드를 참조합니다. 수정 된 파이프 라인은 다음과 같습니다.

ResearchPapers 
.aggregate([ 
    { 
    $match: params 
    }, 
    { 
    $group: { 
     _id: "$pmid", 
     "Title": { 
     "$first": "$Title" 
     }, 
     "url": { 
     "$first": "$url" 
     }, 
     "year": { 
     "$first": "$year" 
     }, 
     "month": { 
     "$first": "$month" 
     }, 
     "day": { 
     "$first": "$day" 
     } 
    } 
    }, 
    { 
    $sort: { 
     year: -1, 
     month: -1, 
     day: -1 
    } 
    } 
]).exec(function(cerr, records) { 
    if (cerr) { 
    return console.log(cerr); 
    } 
});