본문 바로가기
데이터베이스/MongoDB

[Mongoose] Read관련, 차이점

by minhyeok.lee 2023. 2. 26.
반응형

[Mongoose] Model.find() vs Model.findById() vs Model.findOne()

 

Read관련

Mongoose: Model.find(), Model.findById(), Model.findOne()

 

1. Model.find()

컬렉션 쿼리를 수행하고 해당되는 문서들을 반환한다.

 

2. Model.findById()

_id에 해당하는 문서를 반환한다. (_id는 기본적으로 unique하기 때문에 하나의 문서만 반환된다.)

findById(id)는 거의 findOne({ _id: id })과 동일하다.

Id는 명령을 보내기 전에 스키마를 기반으로 캐스트된다.

 

3. Model.findOne()

쿼리를 수행하고 하나의 문서를 반환한다.

 

Model.find() vs Model.findOne()

1. 기본적으로 쿼리에 해당하는 모든 문서를 찾는지 단일 문서를 찾는지에 대한 차이가 있다.

2. find()의 결과값으로 반환되는 문서가 하나라면 findOne()과 동일하게 동작한다.

 

findById() vs findByOne()

1. 기본적으로 MongoDB는 _id로 indexing되기 때문에 _id로 조회하면 findOne() 대신 findById()를 사용하는 것이 좋다.

2. 정의되지 않은 것을 처리하는 방법을 제외하고 findOne()을 사용 시, findOne(undefined) 및 findOne({ _id: undefined })이 findOne({})과 동일하고 임의의 문서를 반환한다.

3. mongoose에서 findById(undefined)를 findOne({ _id: null })으로 반환한다.

반응형

댓글