Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
PyMongo 드라이버
/

BSON

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

BSON 또는 바이너리 JSON 은 MongoDB 데이터를 구성하고 저장 데 사용하는 데이터 형식입니다. 이 데이터 형식은 모든 JSON 데이터 구조 유형을 포함하며 날짜, 다양한 크기의 정수, ObjectId 및 바이너리 데이터를 포함한 유형에 대한 지원 추가합니다. BSON 패키지 포함하여 Python 애플리케이션 에서 BSON 문서를 사용할 수 있습니다. 지원되는 유형의 전체 목록은 BSON types 서버 매뉴얼 페이지를 참조하세요.

BSON 문서는 MongoDB 컬렉션에 바이너리 형식으로 저장되는 반면, PyMongo BSON 문서를 Python 사전으로 나타냅니다. PyMongo Python 사전을 컬렉션 에 삽입할 때 자동으로 BSON 문서로 변환합니다. 마찬가지로, 컬렉션 에서 문서 조회 때 PyMongo BSON 문서 Python 사전으로 다시 변환합니다.

다음 예시 사전과 BSON 형식의 문서 모두 보여줍니다. Dictionary 또는 BSON 탭 사용하여 해당 형식을 확인합니다.

{"hello": "world"}
\x16\x00\x00\x00 # total document size
\x02 # 0x02 = type String
hello\x00 # field name
\x06\x00\x00\x00world\x00 # field value
\x00 # 0x00 = type EOO ("end of object")

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

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

Python 에서 사전을 만들 때 사용하는 것과 동일한 표기법을 사용하여 BSON 문서 만들 수 있습니다. 다음 예시 앞의 샘플 BSON 문서 나타내는 BSON 문서 만듭니다.

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

Python 에서 사전을 수정하는 데 사용하는 것과 동일한 표기법을 사용하여 BSON 문서 의 내용을 수정할 수 있습니다. 다음 예시 샘플 BSON 문서 를 세 가지 변경합니다.

  1. 값이 12345인 새 필드restaurant_id을 추가합니다.

  2. cuisine 필드 제거

  3. name 필드의 값을 "Mongo's Pizza Place"로 설정합니다.

document["restaurant_id"] = 12345
del document["cuisine"]
document["name"] = "Mongo's Pizza Place"

BSON 데이터를 파일 에 쓰기 (write) 려면 출력 파일 에서 바이너리 쓰기 모드 로 파일 스트림 엽니다. 그런 다음 각 문서 출력 파일 에 쓰기 (write) . bson.encode() 메서드를 사용하여 문서가 BSON 형식으로 인코딩되었는지 확인합니다.

다음 예시 샘플 BSON 문서 file.bson에 씁니다.

with open("file.bson", "w") as file:
file.write(bson.encode(document))

파일 에서 BSON 문서를 읽으려면 입력 파일 에서 바이너리 읽기 모드 로 파일 스트림 엽니다. 그런 다음 bson.decode() 메서드를 사용하여 BSON 형식의 문서를 읽을 때 디코딩합니다.

다음 예시 file.bson에서 샘플 BSON 문서 읽습니다.

with open("file.bson", "rb") as file:
data = file.read()
document = bson.decode(data)
print(document)
{"address": {"street": "Pizza St", "zipcode": "10003"}, "coord": [-73.982419, 41.579505], "cuisine": "Pizza", "name": "Mongo's Pizza"}

PyMongo 원시 BSON 문서 사용을 지원합니다. 다음 목록에는 원시 BSON 문서를 사용해야 할 수 있는 몇 가지 상황이 포함되어 있습니다.

  • 데이터베이스 또는 컬렉션 간 문서 이동

  • 디스크에 바이너리 데이터 쓰기

  • Python 사전과의 변환에 따른 성능 오버헤드

RawBSONDocument 클래스는 기본 원시 BSON 바이트에 대한 액세스 제공하는 BSON 문서 를 나타냅니다. RawBSONDocument 객체를 사용하여 컬렉션 의 문서를 나타내려면 MongoClient 생성자의 document_class 매개 변수를 RawBSONDocument로 설정하다 .

참고

RawBSONDocument 객체는 읽기 전용입니다. RawBSONDocument를 수정하려면 먼저 Python 사전으로 변환해야 합니다.

다음 예시 RawBSONDocument 객체를 사용하여 컬렉션 모델링하도록 MongoClient 객체 구성한 다음 이전 예시에서 샘플 문서 검색합니다. Synchronous 또는 Asynchronous 탭 선택하여 해당 코드를 확인합니다.

from bson.raw_bson import RawBSONDocument
client = pymongo.MongoClient("<connection URI>", document_class=RawBSONDocument)
collection = client.sample_restaurants.restaurants
raw_doc = collection.find_one({"name": "Mongo's Pizza"})
print(type(raw_doc))
<class 'bson.raw_bson.RawBSONDocument'>
from bson.raw_bson import RawBSONDocument
client = pymongo.AsyncMongoClient("<connection URI>", document_class=RawBSONDocument)
collection = client.sample_restaurants.restaurants
raw_doc = await collection.find_one({"name": "Mongo's Pizza"})
print(type(raw_doc))
<class 'bson.raw_bson.RawBSONDocument'>

이 가이드 에 설명된 메서드 또는 유형에 대해 자세히 학습 BSON API 설명서를 참조하세요.

돌아가기

데이터 형식

이 페이지의 내용