AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

데이터베이스 및 컬렉션

이 가이드 에서는 C++ 운전자 사용하여 MongoDB 데이터베이스 및 컬렉션과 상호 작용 방법을 학습 수 있습니다.

MongoDB는 데이터를 다음 수준의 계층 구조로 구성합니다.

  • 데이터베이스: 컬렉션을 저장 하는 MongoDB deployment 의 최상위 데이터 구조입니다.

  • 컬렉션: MongoDB 문서 그룹입니다. 관계형 데이터베이스의 테이블과 유사합니다.

  • Documents: Units that store literal data such as string, numbers, dates, and other embedded documents. For more information about document field types and structure, see the Documents guide in the MongoDB Server manual.

mongocxx::client 객체 에서 database() 함수를 호출하고 데이터베이스 이름을 인수로 전달하여 데이터베이스 액세스 할 수 있습니다.

다음 예제에서는 test_database 데이터베이스에 액세스합니다.

auto db = client.database("test_database");

또는 다음 코드와 같이 mongocxx::client 에 [] 연산자 database() 함수의 약어로 사용할 수 있습니다.

auto db = client["test_database"];

mongocxx::database 객체 에서 collection() 함수를 호출하고 컬렉션 이름을 인수로 전달하여 컬렉션 액세스 할 수 있습니다.

다음 예시 test_collection이라는 컬렉션 에 액세스합니다.

auto coll = database.collection("test_collection");

또는 다음 코드와 같이 mongocxx::database 에 [] 연산자 collection() 함수의 약어로 사용할 수 있습니다.

auto coll = database["test_collection"];

팁

제공된 컬렉션 이름이 데이터베이스에 아직 존재하지 않는 경우, MongoDB는 데이터를 처음 삽입할 때 컬렉션을 암시적으로 생성합니다.

create_collection() 함수를 사용하여 MongoDB database 에 컬렉션 명시적으로 만들 수 있습니다.

다음 예에서는 example_collection 이라는 collection을 만듭니다.

auto coll = database.create_collection("example_collection");

BSON 문서 내에서 create_collection() 함수의 두 번째 매개변수로 전달하여 최대 크기 및 문서 유효성 검사 규칙과 같은 컬렉션 옵션을 지정할 수 있습니다. 선택적 매개변수의 전체 목록은 MongoDB Server 매뉴얼의 create 명령 문서를 참조하세요.

list_collections() 함수를 호출하여 데이터베이스 의 컬렉션 목록을 조회 할 수 있습니다. 이 함수는 데이터베이스 의 모든 컬렉션과 관련 메타데이터 포함된 커서 반환합니다.

다음 예시 list_collections() 함수를 호출하고 커서 반복하여 결과를 인쇄합니다.

auto cursor = database.list_collections();
for(auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}

데이터베이스 에서 컬렉션 이름만 쿼리 하려면 다음 예시 와 같이 list_collection_names() 함수를 호출합니다.

auto list = database.list_collection_names();
for(auto&& name : list) {
std::cout << name << std::endl;
}

커서 반복에 대한 자세한 내용은 커서에서 데이터 액세스 가이드 참조하세요.

drop() 함수를 사용하여 데이터베이스 에서 컬렉션 삭제 수 있습니다.

다음 예시에서는 test_collection 컬렉션을 삭제합니다.

auto coll = database["test_collection"];
coll.drop();

경고

컬렉션을 제거하면 컬렉션의 모든 데이터가 삭제됨

데이터베이스에서 컬렉션을 삭제하면 해당 컬렉션 내의 모든 문서와 모든 인덱스가 영구적으로 삭제됩니다.

컬렉션의 데이터가 더 이상 필요하지 않은 경우에만 컬렉션을 삭제하세요.

drop() 함수를 사용하여 클러스터 에서 데이터베이스 삭제 수 있습니다.

다음 예시 test_database 데이터베이스 삭제합니다.

auto db = client["test_database"];
db.drop();

경고

데이터베이스를 삭제하면 데이터베이스의 모든 데이터가 삭제됩니다.

데이터베이스 삭제하면 해당 데이터베이스 내의 모든 컬렉션, 문서 및 인덱스가 영구적으로 삭제됩니다.

데이터베이스의 데이터가 더 이상 필요하지 않은 경우에만 데이터베이스 삭제합니다.

읽기 설정( read preference)을 설정하여 드라이버가 읽기 작업을 라우팅하는 방법을 제어할 수 있습니다. 또한 읽기 고려 및 쓰기 고려를 설정하여 드라이버가 복제본 세트에 대한 읽기 및 쓰기 작업의 승인을 기다리는 방법에 대한 옵션을 제어할 수도 있습니다.

기본값 으로 데이터베이스는 mongocxx::client 객체 에서 이러한 설정을 상속하고 컬렉션은 데이터베이스 에서 설정을 상속합니다. 그러나 데이터베이스 또는 컬렉션 에서 다음 함수 중 하나를 사용하여 이러한 설정을 변경할 수 있습니다.

  • read_preference()

  • read_concern()

  • write_concern()

읽기 및 쓰기 (write) 설정에 대해 자세히 학습 MongoDB Server 매뉴얼에서 다음 가이드를 참조하세요.

이 예시 다음 함수를 사용하여 데이터베이스 에 대한 읽기 설정을 구성하는 방법을 보여줍니다.

  • read_preference(): 읽기 설정 (read preference) 다음으로 설정합니다. k_secondary

  • read_concern(): 읽기 고려 (read concern) 다음으로 설정합니다. k_majority

auto db = client["test_database"];
mongocxx::read_preference rp;
rp.mode(mongocxx::read_preference::read_mode::k_secondary);
mongocxx::read_concern rc;
rc.acknowledge_level(mongocxx::read_concern::level::k_majority);
db.read_preference(rp);
db.read_concern(rc);

팁

각 읽기 설정 (read preference) 및 읽기 고려 (read concern) 옵션에 대한 설명을 보려면 다음 API 문서를 참조하세요.

이 예시 다음 함수를 사용하여 컬렉션의 읽기 및 쓰기 고려 (write concern) 지정하는 방법을 보여줍니다.

  • read_concern(): 읽기 고려 (read concern) 다음으로 설정합니다. k_local

  • write_concern(): 쓰기 고려 (write concern) 다음으로 설정합니다. k_acknowledged

auto coll = client["test_database"]["test_collection"];
mongocxx::read_concern rc;
rc.acknowledge_level(mongocxx::read_concern::level::k_local);
mongocxx::write_concern wc;
wc.acknowledge_level(mongocxx::write_concern::level::k_acknowledged);
coll.read_concern(rc);
coll.write_concern(wc);

팁

각 읽기 및 쓰기 고려 (write concern) 수준에 대한 설명을 보려면 다음 API 문서를 참조하세요.

MongoDB Server 에서는 선택한 기준에 따라 복제본 세트 멤버에 키-값 태그를 적용 할 수 있습니다. 그런 다음 해당 태그를 사용하여 읽기 작업의 멤버를 한 명 이상 대상으로 지정할 수 있습니다.

기본값 으로 C++ 운전자 읽을 멤버를 선택할 때 태그를 무시합니다. C++ 운전자 특정 태그를 선호하도록 하려면 mongocxx::read_preference 객체 만들고 해당 tags() 멤버 함수를 호출합니다. 원하는 태그를 배열 인수로 tags()에 전달합니다.

다음 코드 예시 에서 tags() 함수에 전달된 태그 세트 C++ 운전자 뉴욕 데이터 센터 ("dc": "ny")에서 읽기를 선호하고 샌프란시스코 데이터 센터 ("dc": "sf")로 대체하도록 지시합니다.

auto tag_set_ny = make_document(kvp("dc", "ny"));
auto tag_set_sf = make_document(kvp("dc", "sf"));
mongocxx::read_preference rp;
rp.mode(mongocxx::read_preference::read_mode::k_secondary);
rp.tags(make_array(tag_set_ny, tag_set_sf).view());

여러 복제본 세트 멤버가 지정한 읽기 설정 (read preference) 및 태그를 지정하다 세트와 일치하는 경우 C++ 운전자 핑 시간에 따라 선택된 가장 가까운 복제본 세트 멤버에서 읽습니다.

기본값 으로 운전자 핑 시간이 가장 가까운 멤버의 15 밀리초 이내인 멤버만 쿼리에 사용합니다. 지연 시간이 더 긴 멤버 간에 읽기를 분산하려면 연결 문자열 URI에 localThresholdMS 매개 변수를 포함합니다.

다음 예시 localhost:27017 에서 실행 MongoDB deployment 에 연결하고 로컬 임계값을 35 밀리초로 지정합니다.

mongocxx::uri uri("mongodb://localhost:27017/?localThresholdMS=35");
mongocxx::client client(uri);

앞의 예시 에서 C++ 운전자 가장 가까운 멤버의 핑 시간 35 밀리초 내에 일치하는 멤버 간에 읽기를 분산합니다.

이 가이드 에서 설명하는 함수에 대해 자세히 학습 다음 API 문서를 참조하세요.