2014-04-04 4 views
0

이것은 내 데이터베이스/문서입니다. 실행 :

db.Students.find().pretty() 

결과는 다음과 같습니다

{ 
    "_id" : 1, 
    "scores" : [ 
     { 
      "attempt" : 1, 
      "score" : 5 
     }, 
     { 
      "attempt" : 2, 
      "score" : 10 
     }, 
     { 
      "attempt" : 3, 
      "score" : 7 
     }, 
     { 
      "attempt" : 4, 
      "score" : 9 
     } 
    ] 
} 

어떻게 $sort를 사용하여 내림차순으로 점수를 표시하려면?

+0

mongodb의 sort()는 문서를 정렬하는 데 사용됩니다. 여기서 하나의 문서와 내용을 정렬하려는 배열로 언급합니다. sort()는 여기서 작동하지 않습니다. – svjn

+0

이 답변 섹션의 Neil의 대답은 요구 사항에 맞습니다. – svjn

+0

@svjn 숙제 문제를 묻는 단 한 번의 방법 일 뿐이며 사용자가 대답을 받아 본 적이 없습니다. 다시 응답하지 않을 사람으로 북마크하십시오. –

답변

1

수정 자로 실제로는 .find()을 사용하면 문서의 정렬은되지만 배열의 내용은 정렬 할 수 없습니다. 하지만 .aggregate()를 사용하는 것을 수행 할 수 있습니다

db.Students.aggregate([ 

    // Unwind the array to de-normalize 
    { "$unwind": "$scores" }, 

    // Sort the documents with the scores descending 
    { "$sort": { "_id": 1, "scores.score": -1 } }, 

    // Group back to an array 
    { "$group": { 
     "_id": "$_id", 
     "scores": { "$push": "$scores" } 
    }} 
]) 

그래서 한 번 모든 요소는 개별 문서에 "드 정규화"이다는 $sort 파이프 라인 단계는 순서를 재 - 배열을 처리한다.