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

쿼리 지정

이 가이드에서는 문서의 하위 집합과 일치하도록 쿼리를 지정하는 방법을 배울 수 있습니다.

문서의 하위 집합을 일치시키려면 일치 기준 이 포함된 쿼리 필터 를 지정합니다. 일치 조건은 문서에서 일치시키려는 필드와 값으로 구성됩니다. 쿼리 필터에는 반환할 문서를 결정하기 위한 일치 기준 집합이 하나 이상 포함되어 있습니다. 찾기 작업에서 빈 쿼리 필터를 사용하면 드라이버는 컬렉션의 모든 문서를 일치시킵니다.

쿼리 필터에서 필드를 리터럴 값 또는 쿼리 작업자와 일치시킬 수 있습니다. 쿼리 작업자를 사용하면 수학적 또는 논리적 연산을 수행하여 컬렉션 내에서 문서를 찾을 수 있습니다.

리터럴 값을 사용하여 문서를 일치시키려면 다음 형식을 사용하세요.

let filter = doc! { "<field>": "<value>" };

쿼리 연산자를 포함하는 일치 조건을 만들려면 다음 형식을 사용하세요.

let filter = doc! { "<field>": doc! { "<operator>": "<value>" } };

다음 섹션의 예에서는 find() 메서드를 사용하여 collection의 문서와 일치하는 쿼리를 지정하는 방법을 보여줍니다.

이 가이드에는 다음 섹션이 포함되어 있습니다.

  • 예시용 샘플 데이터는 쿼리 예제에서 사용되는 샘플 데이터를 제공합니다.

  • Literal Values describes how to query for data that exactly matches a value you provide in the query filter

  • 비교 는 컬렉션의 값과의 비교를 기반으로 데이터를 쿼리하는 방법을 설명합니다.

  • 논리 는 필드 수준 연산자의 결과에 적용된 논리를 사용하여 데이터를 쿼리하는 방법을 설명합니다.

  • 요소 는 필드의 유무 또는 유형에 따라 쿼리하는 방법을 설명합니다.

  • 평가 는 컬렉션의 문서를 쿼리할 때 정규식 및 텍스트 검색과 같은 상위 수준 로직을 실행하는 방법을 설명합니다.

  • Bitwise describes how to query based on the equivalent bits set of a base-10 value

  • Array describes how to query a collection based on data within an array-valued field

  • 추가 정보에서 이 가이드에 언급된 유형 및 메소드에 대한 리소스 및 API 문서 링크를 찾을 수 있습니다.

이 가이드의 예에서는 다음 샘플 문서를 사용합니다. 각 문서는 매장 재고에 있는 과일을 나타내며 수량에 대한 정보를 포함합니다. 일부 문서에는 과일 또는 그 공급업체를 설명하는 필드가 포함되어 있습니다.

#[derive(Serialize, Deserialize, Debug)]
struct Fruit {
_id: String,
name: String,
quantity: i32,
#[serde(skip_serializing_if = "Option::is_none")]
description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
vendors: Option<Vec<String>>
}

다음 섹션의 예시에서는 Fruit 구조체로 설명되는 문서 컬렉션을 쿼리합니다.

let docs = vec! [
Fruit {
_id: 1.to_string(),
name: "orange".to_string(),
quantity: 7,
description: None,
vendors: None
},
Fruit {
_id: 2.to_string(),
name: "apple".to_string(),
quantity: 4,
description: Some("Granny Smith".to_string()),
vendors: None
},
Fruit {
_id: 3.to_string(),
name: "banana".to_string(),
quantity: 36,
description: None,
vendors: None
},
Fruit {
_id: 4.to_string(),
name: "pear".to_string(),
quantity: 28,
description: None,
vendors: vec!["A".to_string(), "C".to_string() ].into()
},
];

리터럴 값 쿼리 필터를 사용하면 쿼리 필터에 제공한 값과 정확히 일치하는 데이터를 쿼리할 수 있습니다. 다음 작업은 리터럴 쿼리를 사용하여 "pear" 값을 가진 name 필드가 포함된 문서를 검색합니다.

let query = doc! { "name": "pear" };
let mut cursor = my_coll.find(query, None).await?;
while let Some(doc) = cursor.try_next().await? {
println!("{:?}", doc);
}

참고

리터럴 값 쿼리는 $eq 비교 연산자를 사용하는 쿼리와 동일하게 작동합니다. 예를 들어 다음 쿼리는 동일합니다.

my_coll.find(doc! {
"price": doc! { "$eq": 5 }
}).await?;
my_coll.find(doc! {
"price": 5
}).await?;

비교 연산자를 사용하면 문서를 쿼리 필터의 값과 비교하여 문서를 쿼리할 수 있습니다. 일반적인 비교 연산자로는 '보다 큰(greater than)' 비교를 위한 $gt , '보다 작은(less than)' 비교를 위한 $lt , '같지 않은(not equal to)' 비교를 위한 $ne 등이 있습니다.

다음 작업은 비교 연산자 $gt 를 사용하여 quantity 값이 5 보다 큰 문서를 일치시킵니다.

// $gt means "greater than"
let query = doc! { "quantity": doc! { "$gt": 5 } };
let mut cursor = my_coll.find(query, None).await?;
while let Some(doc) = cursor.try_next().await? {
println!("{:?}", doc);
}

For more information on comparison operators, see Comparison Query Operators in the Server manual.

논리 연산자에는 최소 두 개의 일치 기준이 필요하며 이러한 기준 중 일부, 전부 또는 전혀 충족하지 않는 문서를 일치시킬 수 있습니다. 예를 들어 논리 연산자 $or 를 사용하여 $gt (보다 큼) 비교 연산자 또는 리터럴 값 쿼리와 일치하는 문서를 쿼리할 수 있습니다.

다음 작업은 논리 연산자 $and 을 사용하여 quantity 값이 보다 크고 10 로 나누어 떨어지는 문서를 일치시킵니다.3

let query =
doc! { "$and": [
doc! { "quantity": doc! { "$gt": 10 } },
doc! { "quantity": doc! { "$mod": [ 3, 0 ] } }
]
};
let mut cursor = my_coll.find(query, None).await?;
while let Some(doc) = cursor.try_next().await? {
println!("{:?}", doc);
}

참고

쿼리 필터에 여러 필드-값 쌍이 있는 리터럴 값 쿼리가 포함된 경우 드라이버는 모든 기준을 충족하는 문서를 일치시킵니다.

예를 들어 다음 쿼리는 동일한 결과를 생성합니다.

my_coll.find(doc! {
"price": doc! { "$eq": 5 },
"quantity": doc! { "$gt": 4 }
});
my_coll.find(doc! {
$and: [
doc! { "price": { "$eq": 5 }},
doc! { "quantity": { "$gt": 4 }}
]
});

논리 연산자의 전체 목록은 서버 매뉴얼의 논리 쿼리 연산자 를 참조하세요.

요소 연산자를 사용하면 지정된 필드의 유형을 기준으로 또는 문서에 지정된 필드가 포함된 경우 문서를 일치시킬 수 있습니다.

다음 작업은 요소 연산자 $exists를 사용하여 description 필드가 포함된 문서를 검색합니다.

let query = doc! { "description": doc! { "$exists": true } };
let mut cursor = my_coll.find(query, None).await?;
while let Some(doc) = cursor.try_next().await? {
println!("{:?}", doc);
}

참고

The Fruit struct describing the documents in this guide uses the #[serde(skip_serializing_if = "Option::is_none")] attribute on two of its fields. This attribute specifies that the field be ignored if its value is None. This prevents a description value of None from being returned on an $exists query.

자세한 내용은 Serde 속성과 함께 직렬화하기 를 참조하세요.

For a full list of element operators, see Element Query Operators in the Server manual.

평가 연산자는 개별 필드나 collection의 문서를 분석하여 특정 기준을 충족하는지 확인합니다. 각 평가 연산자는 서로 다른 기능을 수행합니다. 예를 들어 $mod 연산자는 필드 값에 대해 수학 연산을 수행하고, $where 연산자를 사용하면 JavaScript 표현식을 기준으로 값을 평가할 수 있습니다.

다음 작업은 평가 연산자 $mod 를 사용하여 quantity 값이 3으로 나누어지는 값을 가진 문서를 검색합니다.

// $mod means "modulo" and checks if the remainder is a specific value
let query = doc! { "quantity": doc! { "$mod": [ 3, 0 ] } };
let mut cursor = my_coll.find(query, None).await?;
while let Some(doc) = cursor.try_next().await? {
println!("{:?}", doc);
}

For a full list of evaluation operators, see Evaluation Query Operators in the Server manual.

비트 연산자는 숫자 필드를 밑이 10진수(십진법)인 숫자에서 해당하는 밑이 2진수(이진법)인 숫자로 변환합니다. 비트 연산자는 문서의 값이 사용자의 매치 기준의 값과 동일한 비트로 설정되어 있는지 확인합니다.

다음 예시는 quantity 에 7 와 동일한 비트가 설정되어 바이너리로 00000111 에 해당하는 문서와 일치합니다.

let query = doc! { "quantity": doc! { "$bitsAllSet": 7 } };
let mut cursor = my_coll.find(query, None).await?;
while let Some(doc) = cursor.try_next().await? {
println!("{:?}", doc);
}

비트 연산자의 전체 목록은 MongoDB Server 매뉴얼의 비트 쿼리 연산자 를 참조하세요.

배열 연산자는 배열 값 필드에 있는 요소의 값이나 양을 확인합니다.

다음 예는 vendor 배열 필드에 "C" 가 포함된 문서와 일치합니다.

let query = doc! { "vendors": doc! { "$elemMatch": { "$eq": "C" } } };
let mut cursor = my_coll.find(query, None).await?;
while let Some(doc) = cursor.try_next().await? {
println!("{:?}", doc);
}

비트 연산자의 전체 목록은 서버 매뉴얼의 배열 쿼리 연산자 를 참조하세요.

찾기 작업에 대해 자세히 알아보려면 데이터 검색 가이드를 참조하세요.

쿼리 연산자에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 쿼리 선택기 를 참조하세요.

이 가이드에 사용된 메서드 및 유형에 대해 자세히 알아보려면 다음 API 문서를 참조하세요.