Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

이진 크기(집계)

이 페이지의 내용

  • 정의
  • 행동
  • 예시
$binarySize

지정된 문자열 또는 바이너리 데이터 값의 콘텐츠 크기를 바이트 단위로 반환합니다.

$binarySize 의 구문은 다음과 같습니다:

{ $binarySize: <string or binData> }

인수는 또는 이진 데이터 값으로 해석되는 한 유효한 표현식 일 수 있습니다. string 표현식에 대한 자세한 내용은 표현식 연산자를 참조하세요.

$binarySize의 인수는 다음 중 하나로 해석되어야 합니다.

  • 문자열,

  • 이진 데이터 값 또는

  • null.

인수가 문자열 또는 이진 데이터 값인 경우 표현식은 인수의 크기를 바이트 단위로 반환합니다.

인수가 null 이면 표현식은 null 을 반환합니다.

인수가 다른 데이터 유형으로 확인되면 $binarySize 오류가 발생합니다.

$binarySize의 인수가 문자열인 경우 연산자는 각 문자가 1~4바이트를 사용할 수 있는 문자열에서 UTF-8으로 인코딩된 바이트 수를 계산합니다.

예를 예시, US-ASCII 문자는 1바이트를 사용하여 인코딩됩니다. 분음 부호와 추가 라틴 알파벳 문자(영어 알파벳 이외의 라틴 문자)가 있는 문자는 2바이트를 사용하여 인코딩됩니다. 중국어, 일본어 및 한국어 문자에는 일반적으로 3바이트가 필요하고, 다른 유니코드 평면(이모티콘, 수학 기호 등)에는 4바이트가 필요합니다.

다음 예시를 고려하십시오.

예시
결과
참고 사항
{ $binarySize: "abcde" }
5
각 문자는 1바이트를 사용하여 인코딩됩니다.
{ $binarySize: "Hello World!" }
12
각 문자는 1바이트를 사용하여 인코딩됩니다.
{ $binarySize: "cafeteria" }
9
각 문자는 1바이트를 사용하여 인코딩됩니다.
{ $binarySize: "cafétéria" }
11
é 은(는) 2바이트를 사용하여 인코딩됩니다.
{ $binarySize: "" }
0
빈 문자열은 0을 반환합니다.
{ $binarySize: "$€λG" }
7
는 3바이트를 사용하여 인코딩됩니다. λ 은(는) 2바이트를 사용하여 인코딩됩니다.
{ $binarySize: "寿司" }
6
각 문자는 3바이트를 사용하여 인코딩됩니다.

mongosh에서 다음 문서를 사용하여 images라는 이름의 샘플 컬렉션을 만듭니다.

db.images.insertMany([
{ _id: 1, name: "cat.jpg", binary: new BinData(0, "OEJTfmD8twzaj/LPKLIVkA==")},
{ _id: 2, name: "big_ben.jpg", binary: new BinData(0, "aGVsZmRqYWZqYmxhaGJsYXJnYWZkYXJlcTU1NDE1Z2FmZCBmZGFmZGE=")},
{ _id: 3, name: "tea_set.jpg", binary: new BinData(0, "MyIRAFVEd2aImaq7zN3u/w==")},
{ _id: 4, name: "concert.jpg", binary: new BinData(0, "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=")},
{ _id: 5, name: "empty.jpg", binary: new BinData(0, "") }
])

다음 애그리게이션 projects:

  • name 필드

  • imageSize 필드(이 필드는 $binarySize를 사용하여 문서의 binary 필드 크기를 바이트 단위로 반환함)

db.images.aggregate([
{
$project: {
"name": "$name",
"imageSize": { $binarySize: "$binary" }
}
}
])

이 연산은 다음과 같은 결과를 반환합니다.

{ "_id" : 1, "name" : "cat.jpg", "imageSize" : 16 }
{ "_id" : 2, "name" : "big_ben.jpg", "imageSize" : 41 }
{ "_id" : 3, "name" : "teaset.jpg", "imageSize" : 16 }
{ "_id" : 4, "name" : "concert.jpg", "imageSize" : 269 }
{ "_id" : 5, "name" : "empty.jpg", "imageSize" : 0 }

다음 파이프라인은 바이너리 데이터 크기가 가장 큰 이미지를 반환합니다.

db.images.aggregate([
// First Stage
{ $project: { name: "$name", imageSize: { $binarySize: "$binary" } } },
// Second Stage
{ $sort: { "imageSize" : -1 } },
// Third Stage
{ $limit: 1 }
])
첫 번째 단계

파이프라인 projects 의 첫 번째 단계입니다.

  • name 필드

  • imageSize 필드(이 필드는 $binarySize를 사용하여 문서의 binary 필드 크기를 바이트 단위로 반환함)

이 단계에서는 다음 문서를 다음 단계로 출력합니다.

{ "_id" : 1, "name" : "cat.jpg", "imageSize" : 16 }
{ "_id" : 2, "name" : "big_ben.jpg", "imageSize" : 41 }
{ "_id" : 3, "name" : "teaset.jpg", "imageSize" : 16 }
{ "_id" : 4, "name" : "concert.jpg", "imageSize" : 269 }
{ "_id" : 5, "name" : "empty.jpg", "imageSize" : 0 }
두 번째 단계

두 번째 단계에서는 문서를 imageSize 씩 내림차순으로 sorts 처리합니다.

이 단계에서는 다음 문서를 다음 단계로 출력합니다.

{ "_id" : 4, "name" : "concert.jpg", "imageSize" : 269 }
{ "_id" : 2, "name" : "big_ben.jpg", "imageSize" : 41 }
{ "_id" : 1, "name" : "cat.jpg", "imageSize" : 16 }
{ "_id" : 3, "name" : "teaset.jpg", "imageSize" : 16 }
{ "_id" : 5, "name" : "empty.jpg", "imageSize" : 0 }
세 번째 단계

세 번째 단계에서는 출력 문서를 limits 처리하여 정렬 순서에서 처음에 나타나는 문서만 반환합니다.

{ "_id" : 4, "name" : "concert.jpg", "imageSize" : 269 }

다음도 참조하세요.

돌아가기

$avg

이 페이지의 내용