해결된 질문
작성
·
190
1
강의보다가 궁금한점이 있어 문의드립니다.
데이터를 push나 save 할 때마다 인덱스를 넣고 싶은경우는 어떻게 하나요?
순차적으로 번호를 주고 싶은데 궁금합니다. 쉽게말해서 자동증가필드? 를 만들고 싶습니다.
또 다른 질문 하나는, 맨 마지막의 데이터와 맨 처음의 데이터? 이게 맞는 의미인지 모르겠는데
시간순서로 보았을때 맨처음 데이터와 맨 마지막 데이터를 얻고 싶을때는 어떻게 찾아야하나요?
요약 정리.
1. 자동증가필드? index가 ++ 순차적으로 증가시키는 방법
2. 시간순서에 의거하여 맨처음과 마지막 데이트를 얻는 방법.
두가지 질문입니다.
답변 2
1
1
DEV JUNGLE님 안녕하세요 :)
여기서 데이터는 내장된 문서를 말씀하시는게 맞을까요? (블로그에 $push: { comments: comment }와 같은?)
1. 자동증가필드? index가 ++ 순차적으로 증가시키는 방법
관계형 데이터베이스에서처럼 auto increment 기능을 넣고 싶으신거 같은데요. 음 일단 내장된 문서든 새로운 문서에서든 auto increment 기능은 따로 없어요. 이 기능이 필요하시면 노드 서버에서 프로그래밍적으로 처리를 해야되요.
참고로 auto increment된 인덱스는 단점이 몇가지 있어서 특별한 이유가 아니라면 auto increment를 권장하지 않아요. 이 단점 때문에 관계형 데이터베이스에서도 auto increment를 안쓰고 ObjectID와 비슷한 UUID를 쓰기도 해요. 마지막 섹션에서 "Sharded Cluster - Horizontal(수평) 확장"에서 이 부분을 다루는데 보시고 더 궁금한점 있으면 물어봐주세요~
2. 시간순서에 의거하여 맨처음과 마지막 데이트를 얻는 방법.
내장된 문서는 노드로 불러와서 처리를 해줘야하고 그냥 문서를 대상으로 하는거는 아래 코드처럼 하시면 되요. Pagination에서 다루는 내용을 응용한 코드입니다.
let newestBlog = await Blog.find({}).sort({ createdAt: -1 }).limit(1)
let oldestBlog = await Blog.find({}).sort({ createdAt: 1 }).limit(1)