Docs Menu
Docs Home
/ / /
C++ 드라이버
/

쿼리 지정

이 페이지의 내용

  • 개요
  • 샘플 데이터
  • 정확히 일치
  • 비교 연산자
  • 로직 연산
  • 배열 연산자
  • 요소 연산자
  • 평가 연산자
  • 추가 정보
  • API 문서

이 가이드 에서는 C++ 운전자 를 사용하여 쿼리 를 지정하는 방법을 학습 수 있습니다.

쿼리 필터하다 를 만들어 쿼리 가 반환하는 문서 설정하다 를 구체화할 수 있습니다. 쿼리 필터하다 는 MongoDB 가 읽기 또는 쓰기 (write) 작업에서 문서를 일치시키는 데 사용하는 검색 기준을 지정하는 표현식 입니다. 쿼리 필터하다 에서는 운전자 에 쿼리 와 정확히 일치하는 문서를 검색 하도록 메시지를 표시하거나 보다 복잡한 일치 기준을 Express 하도록 쿼리 필터를 작성할 수 있습니다.

이 가이드 의 예제에서는 과일을 나타내는 문서가 포함된 fruits 컬렉션 에서 작업을 실행 합니다. 다음 코드 예시 에서는 데이터베이스 와 컬렉션 을 만든 다음 컬렉션 에 샘플 문서를 삽입하는 방법을 보여 줍니다.

mongocxx::uri uri("<connection string>");
mongocxx::client client(uri);
auto db = client["db"];
auto collection = db["fruits"];
std::vector<bsoncxx::document::value> fruits;
fruits.push_back(make_document(kvp("_id", 1), kvp("name", "apples"), kvp("qty", 5), kvp("rating", 3), kvp("color", "red"), kvp("type", make_array("fuji", "honeycrisp"))));
fruits.push_back(make_document(kvp("_id", 2), kvp("name", "bananas"), kvp("qty", 7), kvp("rating", 4), kvp("color", "yellow"), kvp("type", make_array("cavendish"))));
fruits.push_back(make_document(kvp("_id", 3), kvp("name", "oranges"), kvp("qty", 6), kvp("rating", 2), kvp("type", make_array("naval", "mandarin"))));
fruits.push_back(make_document(kvp("_id", 4), kvp("name", "pineapples"), kvp("qty", 3), kvp("rating", 5), kvp("color", "yellow")));
auto result = collection.insert_many(fruits);

참고

mongocxx:: 인스턴스

이 페이지의 코드 예제에서는 애플리케이션 의 다른 곳에서 mongocxx::instance 객체 를 이미 생성했다고 가정합니다.

인스턴스 생성에 학습 보려면 드라이버 인스턴스 생성을 참조하세요.

리터럴 값 쿼리는 쿼리 필터하다 와 정확히 일치하는 문서를 반환합니다.

다음 예시 에서는 쿼리 필터하다 를 find() 메서드에 대한 매개 변수로 지정합니다. 이 코드는 color 필드 값이 "yellow" 인 모든 문서를 반환합니다.

auto cursor = collection.find(make_document(kvp("color", "yellow")));
for (auto &&doc : cursor)
{
std::cout << bsoncxx::to_json(doc) << std::endl;
}
{ "_id" : 2, "name" : "bananas", "qty" : 7, "rating" : 4, "color" : "yellow", "type" : [ "cavendish" ] }
{ "_id" : 4, "name" : "pineapple", "qty" : 3, "rating" : 5, "color" : "yellow" }

모든 문서 찾기

컬렉션의 모든 문서를 찾으려면 find() 메서드를 호출하고 빈 쿼리 필터를 전달합니다. 다음 예에서는 컬렉션의 모든 문서를 찾습니다.

auto cursor = collection.find({});

비교 연산자는 쿼리 필터하다 에 지정된 값을 기준으로 문서 필드 값을 평가합니다. 다음 목록은 일반적인 비교 연산자를 정의합니다.

  • $gt: 보다 큼

  • $lte: 보다 작거나 같음

  • $ne: 같지 않음

비교 연산자의 전체 목록을 보려면 MongoDB Server 매뉴얼의 비교 쿼리 연산자 가이드를 참조하세요.

다음 예시 에서는 쿼리 필터하다 의 비교 연산자 를 find() 메서드에 대한 매개 변수로 지정합니다. 이 코드는 rating 필드 값이 2 보다 큰 모든 문서를 반환합니다.

auto cursor = collection.find(make_document(kvp("rating", make_document(kvp("$gt", 2)))));
for(auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
{ "_id" : 1, "name" : "apples", "qty" : 5, "rating" : 3, "color" : "red", "type" : [ "fuji", "honeycrisp" ] }
{ "_id" : 2, "name" : "bananas", "qty" : 7, "rating" : 4, "color" : "yellow", "type" : [ "cavendish" ] }
{ "_id" : 4, "name" : "pineapples", "qty" : 3, "rating" : 5, "color" : "yellow" }

논리 연산자는 두 개 이상의 표현식 집합의 결과에 적용된 논리를 사용하여 문서를 일치시킵니다. 다음 목록에서는 각 논리 연산자 에 대해 설명합니다.

  • $and: 모든 절의 조건과 일치하는 모든 문서를 반환합니다.

  • $or: 절의 조건과 일치하는 모든 문서를 반환합니다.

  • $nor: 어떤 절의 조건과도 일치 하지 않는 모든 문서를 반환합니다.

  • $not: 표현식 과 일치 하지 않는 모든 문서를 반환합니다.

논리 연산자에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 논리 쿼리 연산자 가이드를 참조하세요.

다음 예시 에서는 쿼리 필터하다 의 논리 연산자 를 find() 메서드에 대한 매개 변수로 지정합니다. 이 코드는 qty 필드 값이 5 보다 크 거나 color 필드 값이 "yellow" 인 모든 문서를 반환합니다.

auto cursor = collection.find(
make_document(kvp("$or",
make_array(make_document(kvp("qty", make_document(kvp("$gt", 5)))),
make_document(kvp("color", "yellow"))))));
for (auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
{ "_id" : 2, "name" : "bananas", "qty" : 7, "rating" : 4, "color" : "yellow", "type" : [ "cavendish" ] }
{ "_id" : 3, "name" : "oranges", "qty" : 6, "rating" : 2, "type" : [ "naval", "mandarin" ] }
{ "_id" : 4, "name" : "pineapples", "qty" : 3, "rating" : 5, "color" : "yellow" }

배열 연산자는 배열 필드 에 있는 요소의 값 또는 수량을 기준으로 문서를 일치시킵니다. 다음 목록에서는 사용 가능한 배열 연산자에 대해 설명합니다.

  • $all: 쿼리 의 모든 요소를 포함하는 배열이 있는 문서를 반환합니다.

  • $elemMatch: 배열 필드 의 요소가 쿼리 의 모든 조건과 일치하는 경우 문서를 반환합니다.

  • $size: 지정된 크기의 배열이 있는 모든 문서를 반환합니다.

배열 연산자에 대해 자세히 알아보려면 매뉴얼의 배열 쿼리 연산자 가이드를 MongoDB Server 참조하세요.

다음 예시 에서는 쿼리 필터하다 의 배열 연산자 를 find() 메서드에 대한 매개 변수로 지정합니다. 이 코드는 type 배열 필드 에 2 요소가 포함된 모든 문서를 반환합니다.

auto cursor = collection.find(make_document(kvp("type", make_document(kvp("$size", 2)))));
for(auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
{ "_id" : 1, "name" : "apples", "qty" : 5, "rating" : 3, "color" : "red", "type" : [ "fuji", "honeycrisp" ] }
{ "_id" : 3, "name" : "oranges", "qty" : 6, "rating" : 2, "type" : [ "naval", "mandarin" ] }

요소 연산자는 필드의 존재 여부 또는 유형에 따라 데이터를 쿼리합니다.

요소 연산자에 대해 자세히 알아보려면 매뉴얼의 요소 쿼리 연산자 가이드를 MongoDB Server 참조하세요.

다음 예제에서는 쿼리 필터의 요소 연산자를 find() 메서드에 대한 매개 변수로 지정합니다. 이 코드는 color 필드가 있는 모든 문서를 반환합니다.

auto cursor = collection.find(make_document(kvp("color", make_document(kvp("$exists", true)))));
for(auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
{ "_id" : 1, "name" : "apples", "qty" : 5, "rating" : 3, "color" : "red", "type" : [ "fuji", "honeycrisp" ] }
{ "_id" : 2, "name" : "bananas", "qty" : 7, "rating" : 4, "color" : "yellow", "type" : [ "cavendish" ] }
{ "_id" : 4, "name" : "pineapples", "qty" : 3, "rating" : 5, "color" : "yellow" }

평가 연산자는 개별 필드 또는 전체 컬렉션 문서의 평가를 기반으로 데이터를 반환합니다.

다음 목록에서는 일반적인 평가 연산자에 대해 설명합니다.

  • $text: 문서에서 텍스트 검색 을 수행합니다.

  • $regex: 지정된 정규 표현식 과 일치하는 문서를 반환합니다.

  • $mod: 필드 값에 대해 모듈로 연산을 수행하고 나머지가 지정된 값인 문서를 반환합니다.

평가 연산자의 전체 목록을 보려면 MongoDB Server 매뉴얼의 평가 쿼리 연산자 가이드를 참조하세요.

다음 예시 에서는 쿼리 필터하다 의 평가 연산자 를 find() 메서드에 대한 매개 변수로 지정합니다. 이 코드는 정규 표현식 을 사용하여 name 필드 값에 연속된 "p" 문자가 두 개 이상 있는 모든 문서를 반환합니다.

auto cursor = collection.find(make_document(kvp("name", make_document(kvp("$regex", "p{2,}")))));
for(auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
{ "_id" : 1, "name" : "apples", "qty" : 5, "rating" : 3, "color" : "red", "type" : [ "fuji", "honeycrisp" ] }
{ "_id" : 4, "name" : "pineapples", "qty" : 3, "rating" : 5, "color" : "yellow" }

문서 쿼리에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 문서 쿼리 가이드를 참조하세요.

C++ 운전자 를 사용하여 문서를 검색하는 방법에 학습 보려면 데이터 검색 가이드 를 참조하세요.

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

돌아가기

Retrieve Data