• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

순차적 증가시키는 데이터 필드와 마지막 데이터를 find하는 법

21.02.21 16:25 작성 조회수 149

1

강의보다가 궁금한점이 있어 문의드립니다.

데이터를 push나 save 할 때마다 인덱스를 넣고 싶은경우는 어떻게 하나요?

순차적으로 번호를 주고 싶은데 궁금합니다. 쉽게말해서 자동증가필드? 를 만들고 싶습니다.

또 다른 질문 하나는, 맨 마지막의 데이터와 맨 처음의 데이터? 이게 맞는 의미인지 모르겠는데

시간순서로 보았을때 맨처음 데이터와 맨 마지막 데이터를 얻고 싶을때는 어떻게 찾아야하나요?

요약 정리.

1. 자동증가필드? index가 ++ 순차적으로 증가시키는 방법

2. 시간순서에 의거하여 맨처음과 마지막 데이트를 얻는 방법.

두가지 질문입니다.

답변 2

·

답변을 작성해보세요.

1

GODOT님의 프로필

GODOT

질문자

2021.02.21

언제나 친절한 답변 감사합니다. 

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)