Docs Menu
Docs Home
/ /

BSON

이 가이드 에서는 C 운전자 사용하여 BSON 문서를 만들고, BSON 문서를 파일 에 쓰기 (write) , 파일 에서 BSON 데이터를 읽는 방법을 학습 수 있습니다.

BSON 또는 바이너리 JSON은 MongoDB가 데이터를 구성하고 저장하는 데 사용하는 데이터 형식입니다. 이 데이터 형식은 모든 JSON 데이터 구조 유형을 포함하며 날짜, 크기가 다른 정수, ObjectID, 이진 데이터 등의 유형에 대한 지원을 추가합니다. 지원되는 유형의 전체 목록은 BSON 유형 서버 매뉴얼 페이지를 참조하십시오.

libbson 패키지 포함하여 C 애플리케이션 에서 BSON 문서를 사용할 수 있습니다.

이 가이드의 코드 샘플에서는 다음 BSON 문서를 예로 사용합니다.

{
"address" : {
"street" : "Pizza St",
"zipcode" : "10003"
},
"coord" : [-73.982419, 41.579505]
"cuisine" : "Pizza",
"name" : "Mongo's Pizza"
}

BSON 문서는 C 운전자 에서 bson_t 유형으로 표시됩니다. BCON_NEW() 함수를 사용하여 bson_t 인스턴스 만들 수 있습니다. 다음 예시 샘플 BSON 문서 의 bson_t 표현을 만듭니다.

bson_t *doc = BCON_NEW( "address", "{",
"street", BCON_UTF8("Pizza St"),
"zipcode", BCON_UTF8("10003"), "}",
"coord", "[", BCON_DOUBLE(-73.982419), BCON_DOUBLE(41.579505), "]",
"cuisine", BCON_UTF8("Pizza"),
"name", BCON_UTF8("Mongo's Pizza")
);

참고

BSON 필드 값

BSON 문서 에 필드를 만들거나 추가할 BCON_* 때는 적절한 함수를 사용하여 필드 값을 올바르게 표현해야 합니다.BCON_* 함수의 전체 목록은 C 운전자 GitHub 리포지토리 의 bson-bcon.h 파일 참조하세요.

BCON_APPEND() 함수를 사용하여 기존 bson_t 인스턴스 에 필드-값 쌍을 추가할 수 있습니다. 다음 예시 샘플 BSON 문서 에 새 yearEstablished 필드 와 값을 추가합니다.

BCON_APPEND(doc, "yearEstablished", BCON_INT32(1996));

추가할 값의 데이터 유형 에 해당하는 bson_append_* 함수를 사용할 수도 있습니다. 다음 예시 bson_append_int32() 함수를 사용하여 이전 예시 와 동일한 필드-값 쌍을 추가합니다.

bson_append_int32(doc, "yearEstablished", -1, 1996);

bson_append_* 함수의 libbson 전체 목록은 API 문서의 bson_t를 참조하세요.

표준 C 파일 I/O 라이브러리와 함께 bson_get_data() 함수를 사용하여 BSON 데이터를 파일 에 쓰기 (write) 수 있습니다. 다음 예시 샘플 BSON 문서 output.bson이라는 파일 에 씁니다.

FILE *fp;
if ((fp = fopen("output.bson", "wb"))) {
fwrite(bson_get_data(doc), 1, doc->len, fp);
fclose(fp);
} else {
fprintf(stderr, "Failed to open file for writing.\n");
return EXIT_FAILURE;
}

bson_reader_t 유형을 사용하여 파일, 메모리 리전 또는 사용자 지정 콜백 에서 BSON 문서 시퀀스를 읽을 수 있습니다. 다음 예시 에서는 example.bson 파일 에서 BSON 문서를 읽고 각 문서 의 JSON 표현을 출력합니다.

bson_reader_t *reader;
bson_error_t error;
const bson_t *b;
char *str;
if (!((reader = bson_reader_new_from_file("example.json", &error)))) {
fprintf(stderr, "Failed to open file: %s\n", error.message);
return EXIT_FAILURE;
}
while ((b = bson_reader_read(reader, NULL))) {
str = bson_as_canonical_extended_json(b, NULL);
fprintf(stdout, "%s\n", str);
bson_free(str);
}
bson_reader_destroy(reader);

bson_json_reader_t 유형을 사용하여 JSON 문서 시퀀스를 읽고 이를 bson_t 문서로 변환할 수 있습니다. 다음 예시 example.json라는 파일 에서 JSON 문서를 읽고, 각 문서 BSON 형식으로 변환하고, 문서를 인쇄합니다.

bson_json_reader_t *reader;
int b;
bson_error_t error;
bson_t doc = BSON_INITIALIZER;
if (!((reader = bson_json_reader_new_from_file("example.json", &error)))) {
fprintf(stderr, "Failed to open file: %s\n", error.message);
return EXIT_FAILURE;
}
while ((b = bson_json_reader_read(reader, &doc, &error))) {
if (b < 0) {
fprintf(stderr, "Failed to parse JSON: %s\n", error.message);
abort();
}
if (fwrite(bson_get_data(&doc), 1, doc.len, stdout) != doc.len) {
fprintf(stderr, "Failed to write BSON to stdout, exiting.\n");
exit(1);
}
bson_reinit(&doc);
}
bson_json_reader_destroy(reader);
bson_destroy(&doc);

다음 예시 와 같이 bson_destroy() 함수를 사용하여 BSON 문서 에 할당된 메모리를 해제할 수 있습니다.

bson_t *doc = BCON_NEW("test", BCON_UTF8("example"));
// Operations using doc
bson_destroy(doc);

중요

애플리케이션 의 메모리 누수를 방지하려면 작업이 완료되면 항상 bson_t 인스턴스 에서 bson_destroy() 를 호출합니다.

이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.

돌아가기

집계

이 페이지의 내용