반응형

db.collection.count()는 내부적으로 countDocuments(), estimatedDocumentCount()
메소드로 분기되어 수행되게 된다.

 

1. countDocuments() :  쿼리를 실제로 수행하는 aggregation의 $group의 $sum 쿼리 수행으로
정확한 개수의 문서수를 반환한다.

2. estimatedDocumentCount() : 쿼리를 타지 않고 metadata에 저장되어 있는 값을 반환한다.

샤드 클러스터의 경우 비정상 종료 후 남은 쓰레기 문서나 청크 마이그레이션 도중에는
count 값이 정확하지 않을 수 있으므로 정확한 개수가 필요한 경우 countDocuments() 메소드를 사용하는게 맞다.

 

count()에 빈 값으로 쿼리를 하면 쿼리 결과가 컬렉션 크기가 크더라도 빨리 반환되는 것을 볼 수 있는데
내부적으로 estimatedDocumentCount()가 수행되었기 때문에 빨리 나오는 것이다.

 

참고 자료

반응형

'database > mongodb' 카테고리의 다른 글

[MongoDB] 샤드 클러스터 운영하기  (0) 2021.08.19