MongoDB - ObjectId: A 초급 가이드
안녕하세요, 미래의 데이터베이스 마법사 여러분! 오늘 우리는 MongoDB와 그独특한 식별자인 ObjectId로의 흥미로운 여행을 시작할 것입니다. 프로그래밍에 처음이라면 걱정하지 마세요 - 나는 당신의 친절한 안내자가 되어 단계별로 설명해 드릴 것입니다. 커피 한 잔을 마시고, 이제 시작해 볼까요!
ObjectId는 무엇인가요?
ObjectIds를 만들기 전에, 그것이 무엇인지 이해해 보겠습니다. 대규모 도서관을 조직하는 것을 상상해 보세요. 각 책은 쉽게 찾을 수 있는 독특한 코드가 필요합니다. 그게 precisely MongoDB 문서에 대해 ObjectId가 하는 일입니다 - 각 문서에 독특한 식별자를 부여합니다.
ObjectId는 12바이트 값을 구성으로 되어 있습니다:
- 4바이트 타임스탬프
- 5바이트 랜덤 값
- 3바이트 증가 카운터
이제 MongoDB에서 ObjectIds를 어떻게 다룰 수 있는지 보겠습니다!
새 ObjectId 생성하기
새 ObjectId를 생성하는 것은 샌드위치 만드는 것과 같이 간단합니다(거의 그렇습니다). MongoDB는 _id
필드를 지정하지 않고 새 문서를 삽입할 때 자동으로 ObjectId를 생성합니다. 하지만 스스로 하나를 만들고 싶다면 어떻게 하나요? 보겠습니다!
from bson.objectid import ObjectId
# 새 ObjectId 생성
new_id = ObjectId()
print(new_id)
이 코드를 실행하면 다음과 같은 것을 볼 수 있습니다:
ObjectId('60d5ecb54f52a1b8c9a8e9d7')
이 코드를 매번 실행할 때마다 다른 ObjectId를 얻을 것입니다. 눈송이처럼 - 두 개는 정확히 동일하지 않습니다!
출력 이해하기
우리가刚才 했던 것을 분해해 보겠습니다:
-
bson
모듈에서ObjectId
클래스를导入了습니다. (BSON은 MongoDB가 데이터를 저장하는 바이너리 형식입니다.) -
ObjectId()
를 호출하여 새 ObjectId를 생성했습니다. - 새 ObjectId를 인쇄했습니다.
보시는 문자열은 우리의 12바이트 ObjectId의 십六진수 표현입니다. 멋지죠?
문서 타임스탬프 생성하기
이제 시간 여행자가 되어 보겠습니다! ObjectId에서 타임스탬프를 추출하여 문서가 언제 생성되었는지 알 수 있습니다. 이는 데이터가 데이터베이스에 추가된 시간을 추적할 때 매우 유용합니다.
from bson.objectid import ObjectId
from datetime import datetime
# 새 ObjectId 생성
new_id = ObjectId()
# 타임스탬프 가져오기
timestamp = new_id.generation_time
print(f"이 문서는 다음 시간에 생성되었습니다: {timestamp}")
이 코드를 실행하면 다음과 같은 것을 볼 수 있습니다:
이 문서는 다음 시간에 생성되었습니다: 2023-06-21 15:30:45.000
무엇이 일어나고 있나요?
- 우리는 새 ObjectId를 생성했습니다.
-
generation_time
속성을 사용하여 타임스탬프를 가져왔습니다. - 타임스탬프를 포함한 친절한 메시지를 인쇄했습니다.
각 ObjectId는 탄생 시간을 기억하는 작은 시간 기계를 안고 있습니다!
ObjectId 문자열로 변환하기
occasionally, ObjectId를 문자열로 변환해야 할 수 있습니다. 웹 페이지에 데이터를 보내거나 ObjectId를 이해하지 못하는 시스템과 작업할 때입니다. 걱정 마세요 - MongoDB가 당신을 위로합니다!
from bson.objectid import ObjectId
# 새 ObjectId 생성
new_id = ObjectId()
# 문자열로 변환
id_string = str(new_id)
print(f"ObjectId: {new_id}")
print(f"문자열: {id_string}")
이 outputs 다음과 같은 것을 볼 수 있습니다:
ObjectId: 60d5ecb54f52a1b8c9a8e9d7
String: 60d5ecb54f52a1b8c9a8e9d7
우리가刚才 했던 것은 무엇인가요?
- 우리는 새 ObjectId를 생성했습니다.
-
str()
함수를 사용하여 문자열로 변환했습니다. - ObjectId와 문자열 버전을 모두 인쇄했습니다.
문자열 버전은 ObjectId()
래퍼 없이 보이지만, 여전히 동일한 ObjectId입니다. 슈퍼 헴어의 복장을 벗는 것처럼 - 그 안에 여전히 동일한 영웅입니다!
보너스: MongoDB 쿼리에서 ObjectId 사용하기
이제 ObjectId에 대한 전문가가 되었으니, MongoDB 쿼리에서 그들을 어떻게 사용할 수 있는지 보겠습니다. 이제 진짜 마법이 일어납니다!
from pymongo import MongoClient
from bson.objectid import ObjectId
# MongoDB에 연결 (로컬 호스트에서 실행 중이라 가정)
client = MongoClient('mongodb://localhost:27017/')
db = client['my_database']
collection = db['my_collection']
# 문서 삽입
result = collection.insert_one({'name': 'John Doe', 'age': 30})
inserted_id = result.inserted_id
print(f"문서 ID로 삽입된 문서: {inserted_id}")
# ObjectId를 사용하여 문서 쿼리
found_document = collection.find_one({'_id': inserted_id})
print(f"찾은 문서: {found_document}")
이 스크립트는 다음과 같은 출력을 보여줄 것입니다:
문서 ID로 삽입된 문서: 60d5ecb54f52a1b8c9a8e9d7
찾은 문서: {'_id': ObjectId('60d5ecb54f52a1b8c9a8e9d7'), 'name': 'John Doe', 'age': 30}
무엇이 일어나고 있나요?
- 우리는 MongoDB 데이터베이스와 컬렉션에 연결했습니다.
- 새 문서를 삽입하고 ObjectId를 얻었습니다.
- 그 ObjectId를 사용하여 데이터베이스에서 문서를 찾았습니다.
특정 락커에 대한 독특한 키를 제공하는 것처럼 - ObjectId를 사용하면 MongoDB 데이터베이스에서 항상 문서를 쉽게 찾을 수 있습니다!
결론
이제 여러분은 MongoDB ObjectId의 세계를 여행했고, 그들을 생성하고, 타임스탬프를 추출하고, 문자열로 변환하고, 쿼리에서 사용하는 방법을 배웠습니다. ObjectId는 MongoDB 세계에서 여러분의 친구입니다 - 데이터를 정리하고 쉽게 접근할 수 있도록 도와줍니다.
MongoDB의 모험을 계속하면서, ObjectIds가到处에서 나타날 것입니다. 하지만 이제 이 지식을 갖추면, 프로처럼 다룰 수 있습니다!
계속 연습하고, 호기심을 유지하고, 행복하게 코딩하세요!
메서드 | 설명 |
---|---|
ObjectId() |
새 ObjectId 생성 |
ObjectId.generation_time |
ObjectId가 생성된 타임스탬프 반환 |
str(ObjectId) |
ObjectId를 문자열로 변환 |
collection.insert_one() |
MongoDB 컬렉션에 문서 삽입하고 ObjectId 반환 |
collection.find_one({'_id': ObjectId}) |
ObjectId를 사용하여 MongoDB 컬렉션에서 문서 찾기 |
기억하세요, MongoDB의 세계에서 ObjectIds는 여러분의 충실한 동반자입니다. 잘 대우하면, 데이터베이스 모험에서 충실하게 섬기겠습니다!
Credits: Image by storyset