개인공부/Backend
mongodb sort가 제대로 안된다고 느껴진다면.
somm12
2023. 7. 2. 21:29
문제라고 느낀 계기
find, sort, skip, limit 를 가지고 페이지 추가로 불러오는 기능을 구현하려던 중, 이상하게 sort가 제대로 안된다는 느낌을 받았다.
더 불러오기 버튼을 누르니, 이어서 불러오는 것이 아닌, 이전에 불러왔던 것도 겹쳐져서 불러오고, 이상했다.
문제의 원인
이유는 바로 sort 기준이 명확하지 않아서다.✨
나는 글을 인기순으로 정렬을 댓글 개수로 기준을 정했는데, 댓글 개수가 0인 글이 여러개여서(중복) 정렬 기준이 명확해지지 않았던 것이 이유였다. 아래 공식 문서를 보면 한 field를 기준으로 sort할 때, 중복되면 any order return 한다고 한다.
문제 해결
위의 공식 문서에서 말하듯, 기준이 명확해지지 않는 경우에 이럴 때는 mongoDB에서 자동으로 제공해주는 _id를 기준으로 정해도 좋다 . _id는 완전히 unique하기 때문이다.
참고
MongoDB returns wrong rows with $sort, $skip and $limit
This is the function I'm using MyModel.aggregate([ { $match: query }, { $sort: { 'createdAt': -1 } }, { $skip: skip }, { $limit: 10 } ], { allowDiskUse : true }); query is to filter the ...
stackoverflow.com