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

MongoDB에서 이름이 "Chris"인 문서의 컬렉션 크기 구하는 방법

MongoDB에서 bsonsize()로 특정 조건 문서의 크기 계산하기

MongoDB에서는 Object.bsonsize() 메서드를 사용하면 문서의 실제 BSON 크기를 바이트 단위로 확인할 수 있습니다. 이번 글에서는 이름이 "Chris"인 모든 문서의 크기를 합산해 구하는 방법을 단계별로 살펴보겠습니다.

1. 샘플 컬렉션 생성

먼저 insertOne() 메서드를 사용해 테스트용 컬렉션에 여러 개의 문서를 삽입합니다.

> db.demo250.insertOne({"Name":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e46bd501627c0c63e7dba70")
}
> db.demo250.insertOne({"Name":"Bob"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e46bd531627c0c63e7dba71")
}
> db.demo250.insertOne({"Name":"David"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e46bd561627c0c63e7dba72")
}
> db.demo250.insertOne({"Name":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e46bd5b1627c0c63e7dba73")
}

2. 저장된 전체 문서 조회하기

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

> db.demo250.find();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e46bd501627c0c63e7dba70"), "Name" : "Chris" }
{ "_id" : ObjectId("5e46bd531627c0c63e7dba71"), "Name" : "Bob" }
{ "_id" : ObjectId("5e46bd561627c0c63e7dba72"), "Name" : "David" }
{ "_id" : ObjectId("5e46bd5b1627c0c63e7dba73"), "Name" : "Chris" }

총 4개의 문서 중 이름이 "Chris"인 문서는 2개입니다.

3. 이름이 "Chris"인 문서의 크기 합산하기

다음은 이름이 "Chris"인 문서들만 필터링한 뒤, 각 문서의 BSON 크기를 누적해서 더하는 쿼리입니다. forEach()로 문서를 하나씩 순회하며 Object.bsonsize(doc) 값을 변수에 더하는 방식으로 동작합니다.

> var t = 0;
> db.demo250.find({Name:"Chris"}).forEach(function(doc) {
...    var s = Object.bsonsize(doc);
...    t += s;
... })
> print(t);

실행 결과

쿼리 실행 후 출력되는 값은 다음과 같으며, 단위는 바이트(byte)입니다.

76

즉, 이름이 "Chris"인 두 문서의 크기가 각각 38바이트씩으로, 이를 합친 총 76바이트가 결과로 반환됩니다. 이처럼 Object.bsonsize()forEach()를 조합하면 특정 조건에 맞는 문서들의 실제 저장 용량을 손쉽게 집계할 수 있습니다. 참고로 bsonsize()는 문서 자체의 BSON 직렬화 크기만 측정하므로, 인덱스나 스토리지 오버헤드는 포함하지 않는다는 점도 기억해두면 좋습니다.