정의
행동
인수가 객체이면 이 표현식은 객체가 BSON으로 인코딩된 경우 객체의 크기를 바이트 단위로 반환합니다.
인수가 null 이면 표현식은 null 을 반환합니다.
인수가 객체 또는 null 이외의 데이터 유형으로 확인되면 $bsonSize 오류가 발생합니다.
예시
문서 반환 크기
mongosh에서 다음 문서를 사용하여 employees라는 이름의 샘플 컬렉션을 만듭니다.
 db.employees.insertMany([    {      "_id": 1,      "name": "Alice", "email": "alice@company.com", "position": "Software Developer",      "current_task": {        "project_id": 1,        "project_name": "Aggregation Improvements",        "project_duration": 5,        "hours": 20      }    },    {      "_id": 2,      "name": "Bob", "email": "bob@company.com", "position": "Sales",      "current_task": {        "project_id": 2,        "project_name": "Write Blog Posts",        "project_duration": 2,        "hours": 10,        "notes": "Progress is slow. Waiting for feedback."      }    },    {      "_id": 3,      "name": "Charlie", "email": "charlie@company.com", "position": "HR (On Leave)",      "current_task": null    },    {      "_id": 4,      "name": "Dianne", "email": "diane@company.com", "position": "Web Designer",      "current_task": {        "project_id": 3,        "project_name": "Update Home Page",        "notes": "Need to scope this project."      }    } ]); 
다음 애그리게이션 projects:
- name필드
- object_size필드는- $bsonSize를 사용해 문서의 크기를 바이트 단위로 반환합니다.- $$ROOT변수는 파이프라인에서 현재 처리 중인 문서를 참조합니다. 집계 파이프라인의 변수에 관한 자세한 내용은 집계 표현식의 변수를 참조하세요.
db.employees.aggregate([   {     "$project": {       "name": 1,       "object_size": { $bsonSize: "$$ROOT" }     }   } ]) 
이 연산은 다음과 같은 결과를 반환합니다.
{ "_id" : 1, "name" : "Alice", "object_size" : 222 } { "_id" : 2, "name" : "Bob", "object_size" : 248 } { "_id" : 3, "name" : "Charlie", "object_size" : 112 } { "_id" : 4, "name" : "Dianne", "object_size" : 207 } 
collection에 있는 모든 문서의 합산 크기 반환
다음 파이프라인은 employees 컬렉션 에 있는 모든 문서의 결합된 크기를 반환합니다.
db.employees.aggregate([   {     "$group": {       "_id": null,       "combined_object_size": { $sum: { $bsonSize: "$$ROOT" } }     }   } ]) 
null의 $group _id 값 또는 기타 상수 값을 지정하면 $group 단계는 모든 입력 문서에 대한 누적 값을 전체적으로 계산합니다.
이 작업은 $sum 연산자를 사용하여 컬렉션에 있는 각 문서의 합산된 $bsonSize를 계산합니다. $$ROOT 변수는 파이프라인에서 현재 처리 중인 문서를 참조합니다. 집계 파이프라인의 변수에 대해 자세히 알아보려면 집계 표현식의 변수를 참조하세요.
이 연산은 다음과 같은 결과를 반환합니다.
{ "_id" : null, "combined_object_size" : 789 } 
지정된 필드가 가장 큰 문서 반환
다음 파이프라인은 current_task 필드가 가장 큰 문서를 바이트 단위로 반환합니다.
db.employees.aggregate([    // First Stage    { $project: { name: "$name", task_object_size: { $bsonSize: "$current_task" } }  },    // Second Stage    { $sort: { "task_object_size" : -1 } },    // Third Stage    { $limit: 1 } ]) 
- 첫 번째 단계
- 파이프라인 - projects의 첫 번째 단계입니다.- name필드
- task_object_size필드(이 필드는- $bsonSize를 사용하여 문서의- current_task필드 크기를 바이트 단위로 반환함)
 - 이 단계에서는 다음 문서를 다음 단계로 출력합니다. - { "_id" : 1, "name" : "Alice", "task_object_size" : 109 } - { "_id" : 2, "name" : "Bob", "task_object_size" : 152 } - { "_id" : 3, "name" : "Charlie", "task_object_size" : null } - { "_id" : 4, "name" : "Dianne", "task_object_size" : 99 } 
- 두 번째 단계
- 두 번째 단계에서는 문서를 - task_object_size씩 내림차순으로- sorts처리합니다.- 이 단계에서는 다음 문서를 다음 단계로 출력합니다. - { "_id" : 2, "name" : "Bob", "task_object_size" : 152 } - { "_id" : 1, "name" : "Alice", "task_object_size" : 109 } - { "_id" : 4, "name" : "Dianne", "task_object_size" : 99 } - { "_id" : 3, "name" : "Charlie", "task_object_size" : null } 
- 세 번째 단계
- 세 번째 단계에서는 출력 문서를 - limits처리하여 정렬 순서에서 처음에 나타나는 문서만 반환합니다.- { "_id" : 2, "name" : "Bob", "task_object_size" : 152 }