내 문서 중 하나에 고정 크기 배열을 저장하고 싶습니다.시간순으로 정렬 된 고정 크기 배열 (가장 새로운 것부터)
I.E. 사용자 컬렉션에는 일련의 보고서가 있습니다. 각 보고서에는 시간 소인이 있습니다. 최신 (최신) 배열의 시작 부분에 있도록 배열에서 보고서를 정렬 할 싶습니다.
$ slice 메서드를 사용하려고하지만 배열의 마지막 N 요소 만 유지할 수있는 것처럼 보입니다. 제 경우에는 배열의 첫 번째 N 요소를 유지하려고합니다.
어떻게 든 배열을 최신 시간순으로 정렬하고 N 개의 최신 보고서 만 저장할 수있는 방법이 있습니까? 그런 식으로 N 최신 보고서를 쿼리 할 때 배열의 시작 부분부터 잡을 수 있습니다.
var newReport = ...;
db.users.update({{_id: id},$push: {reports: {$each: [newReport], $sort: {"updatedOn": -1}, $slice: -3}}})
가장 오래된 것부터 가장 오래된 것으로 정렬되지만 슬라이스가 음수이므로 3 개의 가장 오래된 리포트가 배열에 보관됩니다. 일종의 오래된 최신, 그리고 3 개 최신 보고서를 보고서 목록으로 유지됩니다 것
var newReport = ...;
db.users.update({{_id: id},$push: {reports: {$each: [newReport], $sort: {"updatedOn": 1}, $slice: -3}}})
은이다 최신에 오래된를 주문하십시오.
내가 잘못 했나요?
클라이언트 측에서 db와 scan-from-end에 가장 오래된 것을 최신으로 저장할 수없는 이유가 있습니까? 그것은보다 자연스러운 해결책처럼 보입니다. – Amalia