Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 count()와 find().count()의 차이점은 무엇일까?

MongoDB에서 count()find().count()는 기능적으로 차이가 없습니다. 두 메서드 모두 컬렉션 내 문서의 개수를 동일한 방식으로 반환합니다. 이번 글에서는 실제 예제를 통해 두 메서드가 어떻게 작동하는지 자세히 살펴보겠습니다.

테스트용 컬렉션 생성하기

개념을 이해하기 위해 먼저 문서를 포함하는 컬렉션을 생성해 보겠습니다. 아래 쿼리를 사용하면 countDemo라는 컬렉션에 문서를 삽입할 수 있습니다.

> db.countDemo.insertOne({"UserId":1,"UserName":"John"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c7f9d278d10a061296a3c5d")
}
> db.countDemo.insertOne({"UserId":2,"UserName":"Carol"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c7f9d308d10a061296a3c5e")
}
> db.countDemo.insertOne({"UserId":3,"UserName":"Bob"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c7f9d3a8d10a061296a3c5f")
}
> db.countDemo.insertOne({"UserId":4,"UserName":"Mike"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c7f9d428d10a061296a3c60")
}

find()로 전체 문서 조회하기

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다. 다음과 같이 실행합니다.

> db.countDemo.find().pretty();

실행 결과는 다음과 같습니다.

{
   "_id" : ObjectId("5c7f9d278d10a061296a3c5d"),
   "UserId" : 1,
   "UserName" : "John"
}
{
   "_id" : ObjectId("5c7f9d308d10a061296a3c5e"),
   "UserId" : 2,
   "UserName" : "Carol"
}
{
   "_id" : ObjectId("5c7f9d3a8d10a061296a3c5f"),
   "UserId" : 3,
   "UserName" : "Bob"
}
{
   "_id" : ObjectId("5c7f9d428d10a061296a3c60"),
   "UserId" : 4,
   "UserName" : "Mike"
}

총 4개의 문서가 저장되어 있는 것을 확인할 수 있습니다.

count() 메서드 사용하기

count()는 컬렉션에 저장된 레코드(문서)의 개수를 직접 세어 반환하는 메서드입니다. 실행 방법은 다음과 같습니다.

> db.countDemo.count();

실행 결과:

4

find().count() 메서드 사용하기

이번에는 find().count() 방식으로 문서 개수를 구해 보겠습니다. 먼저 find()로 커서를 얻은 후, 그 결과에 대해 count()를 호출하는 형태입니다.

> db.countDemo.find().count();

실행 결과:

4

결론 및 참고 사항

두 메서드 모두 동일하게 4를 반환했습니다. 즉, 조건 없이 전체 문서 수를 셀 때는 count()find().count() 사이에 결과상 차이가 없습니다.

다만 한 가지 유의할 점이 있습니다. 최신 버전의 MongoDB에서는 count() 메서드가 더 이상 권장되지 않으며(deprecated), 대신 정확한 개수가 필요하면 countDocuments(), 근사치면 충분하다면 estimatedDocumentCount()를 사용하는 것이 좋습니다. 이를 통해 성능과 정확성 면에서 더 나은 결과를 얻을 수 있습니다.