2013-12-19 2 views
0

사용하여 중첩 정렬하는 방법 MongoDB를 :이 내가 가지고있는 데이터입니다 findOne

{ 
    "__v" : 25, 
    "_id" : ObjectId("52aadd781a69bfb002000003"), 
    "comments" : [ 
      { 
        "user" : ObjectId("52812042433e5cc012000002"), 
        "_id" : ObjectId("52b2d134e5118e880a00000e"), 
        "created" : ISODate("2013-12-19T10:57:56.908Z"), 
        "comment" : "1" 
      }, 
      { 
        "user" : ObjectId("52812042433e5cc012000002"), 
        "_id" : ObjectId("52b2d151e5118e880a00000f"), 
        "created" : ISODate("2013-12-19T10:58:25.138Z"), 
        "comment" : "2" 
      } 
    ] 
    } 

그리고 내 코드 findOne과 :

db.products.findOne({},null,{sort:{'comments._id':-1}}) 

그리고 결과는 내가 원하는 어떤 내림차순되지 않습니다.

+0

StackOverflow에는 이미 이와 같은 질문이 많이 있습니다. http://stackoverflow.com/questions/15318526/mongodb-sorting-documents-by-nested-data – WiredPrairie

+0

사실 나는 몽구스를 사용하고 있습니다. 채워진 상태에서는 작동하지 않습니다. –

답변

1

sort은 문서의 데이터가 아니라 문서 만 정렬합니다.

당신은 당신의 문서에 다음 findOne을하고 있었다 : 클라이언트는 자바 스크립트를하지

doc.comments.sort(function (a, b) { 
    var x = a._id; 
    var y = b._id; 
    // factor -1 because you want them sorted DESC 
    return -1 * ((x < y) ? -1 : ((x > y) ? 1 : 0)); 
}); 

경우, 당신이 의견을 정렬하는 적절한 방법을 찾을 확신합니다.

+0

감사합니다. 그것은 효과가 있었다. –

+0

당신을 진심으로 환영합니다! 당신은 정확하고 도움이되는 답을 표시 할 수 있습니다 :) – hgoebl