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

MongoDB에서 쿼리 결과의 모든 문서 크기 구하는 방법

MongoDB에서 쿼리에 포함된 모든 문서의 크기 구하기

MongoDB에서 하나의 쿼리에 포함된 모든 문서의 전체 크기를 구하려면 커서를 순회하면서 각 문서의 크기를 개별적으로 계산한 뒤 합산해야 합니다. 이때 Object.bsonsize() 메서드를 활용하면 각 문서가 실제로 차지하는 BSON 바이트 크기를 정확하게 알 수 있습니다.

먼저 예제로 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.

> db.sizeOfAllDocumentsDemo.insertOne({"StudentFirstName":"John","StudentSubject":["MongoDB","Java"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd3c0c1edc6604c74817cd7")
}
> db.sizeOfAllDocumentsDemo.insertOne({"StudentFirstName":"Larry","StudentSubject":["MySQL","PHP"],"StudentAge":21});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd3c0d9edc6604c74817cd8")
}
> db.sizeOfAllDocumentsDemo.insertOne({"StudentFirstName":"Chris","StudentSubject":["SQL Server","C#"],"StudentAge":23,"StudentCountryName":"US"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd3c0fbedc6604c74817cd9")
}

컬렉션의 모든 문서 조회하기

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

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

위 쿼리를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

{
   "_id" : ObjectId("5cd3c0c1edc6604c74817cd7"),
   "StudentFirstName" : "John",
   "StudentSubject" : [
      "MongoDB",
      "Java"
   ]
}
{
   "_id" : ObjectId("5cd3c0d9edc6604c74817cd8"),
   "StudentFirstName" : "Larry",
   "StudentSubject" : [
      "MySQL",
      "PHP"
   ],
   "StudentAge" : 21
}
{
   "_id" : ObjectId("5cd3c0fbedc6604c74817cd9"),
   "StudentFirstName" : "Chris",
   "StudentSubject" : [
      "SQL Server",
      "C#"
   ],
   "StudentAge" : 23,
   "StudentCountryName" : "US"
}

모든 문서의 크기를 합산하는 쿼리

이제 find()로 가져온 커서를 forEach()로 순회하면서 각 문서의 BSON 크기를 누적합시다. 카운터 변수를 초기화한 후 반복문 안에서 Object.bsonsize()를 호출하면 됩니다.

> var allDocument = db.sizeOfAllDocumentsDemo.find();
> var counter = 0;
> allDocument.forEach(
...    function(myDocument) {
...       counter = counter + Object.bsonsize(myDocument)
...    }
... );

> print(counter);

위 코드를 실행하면 쿼리 결과에 포함된 모든 문서의 총 크기(바이트 단위)가 출력됩니다.

358

결과적으로 세 개의 문서가 차지하는 전체 크기는 358바이트입니다. 참고로 Object.bsonsize()는 문서가 MongoDB 내부에서 BSON 형식으로 저장될 때의 실제 크기를 반환하기 때문에, 스토리지 용량 추정이나 16MB 문서 크기 제한 점검 등에 유용하게 활용할 수 있습니다.