개요
이 가이드 에서는 MongoDB .NET/ C# 드라이버 사용하여 쿼리 필터하다 만드는 방법을 학습 수 있습니다. 쿼리 필터하다 CRUD 작업에서 읽거나, 업데이트, 삭제 문서를 지정하는 표현식 입니다. Builders<TDocument>.Filter
정적 속성 에서 제공하는 빌더 메서드를 사용하여 쿼리 필터를 만들고 여기에 작업을 추가할 수 있습니다.
참고
메서드 오버로드
이 페이지의 많은 메서드에는 여러 개의 오버로드가 있습니다. 이 가이드 의 예제에서는 각 메서드에 대한 정의를 하나만 보여줍니다. 사용 가능한 오버로드에 대한 자세한 내용은 API 설명서를 참조하세요.
샘플 데이터
이 가이드의 예에서는 guitars
컬렉션의 다음 문서를 사용합니다.
{ "_id": 1, "make": "Fender", "models": ["Stratocaster", "Telecaster"], "establishedYear": 1946, "rating": 9 } { "_id": 2, "make": "Gibson", "models": ["Les Paul", "SG", "Explorer"], "establishedYear": 1902, "rating": 8 } { "_id": 3, "make": "PRS", "models": ["Silver Sky", "SE", "Custom"], "establishedYear": 1985, "rating": 9 } { "_id": 4, "make": "Kiesel", "models": ["Ares", "Vader", "Solo"], "establishedYear": 2015 } { "_id": 5, "make": "Ibanez", "models": ["RG", "AZ"], "establishedYear": 1957, "rating": 7 } { "_id": 6, "make": "Strandberg", "models": ["Boden", "Salen"], "establishedYear": 1982 }
다음 Guitar
클래스는 아래 컬렉션에 있는 문서를 모델링합니다.
public class Guitar { public int Id { get; set; } public string Make { get; set; } public List<string> Models { get; set; } public int EstablishedYear { get; set; } public int? Rating { get; set; } }
이 페이지의 코드 예제를 실행 하려면 다음 예시 와 같이 guitars
컬렉션 에 대한 참조를 가져와야 합니다.
var client = new MongoClient("localhost://27017"); var guitarCollection = client.GetDatabase("example").GetCollection<Guitar>("guitars");
모든 문서 찾기
빈 쿼리 필터하다 컬렉션 의 모든 문서와 일치합니다. 다음 예시 빈 쿼리 필터하다 만드는 방법을 보여 줍니다.
var filter = Builders<Guitar>.Filter.Empty;
비교 연산자
비교 연산자는 쿼리 값을 지정된 필드 의 값과 비교합니다. 이러한 메서드 중 일부에는 다음 예시 와 같이 메서드 대신 사용할 수 있는 대체 구문이 있습니다.
var filter = Builders<Guitar>.Filter.Eq(g => g.Make, "Fender"); var results = guitarCollection.Find(filter).ToList(); // Alternative syntax var results = guitarCollection.Find(g => g.Make == "Fender").ToList();;
다음 표에는 비교 작업을 위한 .NET/ C# 드라이버 메서드와 이에 상응하는 MongoDB Server 연산자가 나열되어 있습니다.
.NET/ C# 드라이버 메서드 | 대체 구문 | 설명 | MongoDB Server 연산자 |
---|---|---|---|
|
| 지정된 필드 의 값이 쿼리 값과 같은 문서를 일치합니다. | |
|
| 지정된 필드 의 값이 쿼리 값보다 큰 문서를 일치합니다. | |
|
| 지정된 배열 필드 의 요소가 쿼리 값보다 크거나 같은 문서를 일치합니다. | |
| N/A | 지정된 배열 필드 의 요소가 쿼리 배열 의 값과 일치하는 문서를 일치합니다. | |
|
| 지정된 배열 필드 의 요소가 쿼리 값보다 작은 문서를 일치합니다. | |
|
| 지정된 배열 필드 의 요소가 쿼리 값보다 작거나 같은 문서를 일치합니다. | |
|
| 지정된 배열 필드 의 요소가 쿼리 값과 같지 않은 문서를 일치합니다. | |
| N/A | 다음 중 하나에 해당하는 문서를 일치시킵니다.
| |
| N/A | 지정된 필드 의 문자열 값이 쿼리 배열 의 문자열 값과 일치하는 문서를 일치합니다. | |
| N/A | 지정된 필드 의 문자열 값이 쿼리 배열 의 문자열 값과 일치하지 않는 문서를 일치합니다. |
다음 예시 Find()
메서드를 호출하고 운전자 쿼리 필터하다 로 변환하는 Lambda 필터하다 전달합니다. 쿼리 establishedYear
필드 1985
보다 큰 모든 문서와 일치합니다.
// Finds all documents with an "establishedYear" value greater than 1985 var results = guitarCollection.Find(g => g.EstablishedYear > 1985).ToList(); foreach (var doc in results) { // Prints the documents in bson (json) format Console.WriteLine(doc.ToBsonDocument()); }
{ "_id" : 4, "make" : "Kiesel", "models" : ["Ares", "Vader", "Solo"], "establishedYear" : 2015, "rating" : null }
다음 예시에서는 빌더를 사용하여 이전 예시와 동일한 문서와 일치하는 쿼리 필터를 만듭니다.
// Creates a filter for all documents with an "establishedYear" value greater // than 1985 var filter = Builders<Guitar>.Filter.Gt(g => g.EstablishedYear, 1985); // Finds all documents that match the filter var result = guitarCollection.Find(filter).ToList(); foreach (var doc in result) { // Prints the documents in bson (json) format Console.WriteLine(doc.ToBsonDocument()); }
{ "_id" : 4, "make" : "Kiesel", "models" : ["Ares", "Vader", "Solo"], "establishedYear" : 2015, "rating" : null }
다음 예시 Find()
메서드를 호출하고 운전자 쿼리 필터하다 로 변환하는 Lambda 표현식 전달합니다. 쿼리 make
필드 '펜더'와 같은 모든 문서와 일치합니다.
// Finds all documents with a "make" value of "Fender" var results = guitarCollection.Find(g => g.Make == "Fender").ToList(); foreach (var doc in results) { // Prints the documents in bson (json) format Console.WriteLine(doc.ToBsonDocument()); }
{ "_id" : 1, "make" : "Fender", "models" : ["Stratocaster", "Telecaster"], "establishedYear" : 1946, "rating" : 9 }
다음 예시에서는 빌더를 사용하여 이전 예시와 동일한 문서와 일치하는 쿼리 필터를 만듭니다.
// Creates a filter for all documents with a "make" value of "Fender" var filter = Builders<Guitar>.Filter.Eq(g => g.Make, "Fender"); // Finds all documents that match the filter var result = guitarCollection.Find(filter).ToList(); foreach (var doc in result) { // Prints the documents in bson (json) format Console.WriteLine(doc.ToBsonDocument()); }
{ "_id" : 1, "make" : "Fender", "models" : ["Stratocaster", "Telecaster"], "establishedYear" : 1946, "rating" : 9 }
로직 연산
논리 연산자는 두 개 이상의 표현식을 결합하고 해당 표현식의 결과에 따라 결과를 반환합니다. 이러한 메서드에는 다음 예시 와 같이 메서드 대신 사용할 수 있는 대체 구문이 있습니다.
var builder = Builders<Guitar>.Filter; var filter = builder.And( builder.Gte(g => g.EstablishedYear, 1985), builder.Ne(r => r.Make, "Kiesel")); var results = guitarCollection.Find(filter).ToList(); // Alternative syntax var results = guitarCollection.Find( g => g.EstablishedYear >= 1985 && g.Make != "Kiesel") .ToList();
다음 표에는 논리적 연산을 위한 .NET/ C# 드라이버 메서드와 이에 상응하는 MongoDB Server 연산자가 나열되어 있습니다.
.NET/ C# 드라이버 메서드 | 대체 구문 | 설명 | MongoDB Server 연산자 |
---|---|---|---|
|
| 모든 표현식이 참으로 평가되는 문서를 일치시킵니다. | |
|
| 하나 이상의 표현식이 참으로 평가되는 문서를 일치시킵니다. |
다음 예시 Find()
메서드를 호출하고 운전자 쿼리 필터하다 로 변환하는 Lambda 표현식 전달합니다. 쿼리 establishedYear
필드 1985
이상이고 make
필드 'Kiesel'과 같지 않은 모든 문서와 일치합니다.
// Finds all documents with an "establishedYear" value greater than 1985 // and a "make" value that is not equal to "Kiesel" var results = guitarCollection.Find(g => g.EstablishedYear >= 1985 && r.Make != "Kiesel").ToList(); foreach (var doc in results) { // Prints the documents in bson (json) format Console.WriteLine(doc.ToBsonDocument()); }
{ "_id" : 3, "make" : "PRS", "models" : ["Silver Sky", "SE", "Custom"], "establishedYear" : 1985, "rating" : 9 }
다음 예시에서는 빌더를 사용하여 이전 예시와 동일한 문서와 일치하는 쿼리 필터를 만듭니다.
// Creates a filter for all documents with an "establishedYear" value greater // than 1985 and a "make" value that does not equal "Kiesel" var builder = Builders<Guitar>.Filter; var filter = builder.And(builder.Gte(g => g.EstablishedYear, 1985), builder.Ne(r => r.Make, "Kiesel")); // Finds all documents that match the filter var result = guitarCollection.Find(filter).ToList(); foreach (var doc in result) { // Prints the documents in bson (json) format Console.WriteLine(doc.ToBsonDocument()); }
{ "_id" : 3, "make" : "PRS", "models" : ["Silver Sky", "SE", "Custom"], "establishedYear" : 1985, "rating" : 9 }
배열 연산자
배열 연산자는 배열 필드 에 있는 요소의 값 또는 수량을 기준으로 문서를 일치시킵니다. 다음 표에는 배열 작업을 위한 .NET/ C# 드라이버 메서드와 이에 상응하는 MongoDB Server 연산자가 나열되어 있습니다.
.NET/ C# 드라이버 메서드 | 설명 | MongoDB Server 연산자 |
---|---|---|
| 지정된 배열 필드 의 값이 모든 쿼리 값과 일치하는 문서를 일치시킵니다. | |
| 지정된 배열 필드 의 요소가 쿼리 값과 일치하는 문서를 일치합니다. | |
| 지정된 배열 필드 의 요소가 쿼리 값보다 큰 문서를 일치합니다. | |
| 지정된 배열 필드 의 요소가 쿼리 값보다 크거나 같은 문서를 일치합니다. | |
| 지정된 배열 필드 의 요소가 쿼리 배열 의 값과 일치하는 문서를 일치합니다. | |
| 지정된 배열 필드 의 요소가 쿼리 값보다 작은 문서를 일치합니다. | |
| 지정된 배열 필드 의 요소가 쿼리 값보다 작거나 같은 문서를 일치합니다. | |
| 지정된 배열 필드 의 요소가 쿼리 값과 같지 않은 문서를 일치합니다. | |
| 다음 중 하나에 해당하는 문서를 일치시킵니다.
| |
| 지정된 배열 필드 의 문자열 요소가 쿼리 배열 의 문자열 값과 일치하는 문서를 일치합니다. | |
| 다음 중 하나에 해당하는 문서를 일치시킵니다.
| |
| 지정된 배열 필드 의 요소가 쿼리 기준과 일치하는 문서를 일치합니다. | |
| 지정된 배열 필드 지정된 크기인 문서를 일치시킵니다. | |
| 지정된 배열 필드 지정된 크기보다 큰 문서를 일치합니다. | |
| 지정된 배열 필드 지정된 크기보다 크거나 같은 문서를 일치합니다. | |
| 지정된 배열 필드 지정된 크기보다 작은 문서를 일치시킵니다. | |
| 지정된 배열 필드 지정된 크기보다 작거나 같은 문서를 일치합니다. |
다음 예시 빌더 사용하여 models
필드 에 정확히 세 개의 요소가 있는 모든 문서와 일치하는 쿼리 필터하다 만듭니다.
// Creates a filter for all documents with 3 elements in the "models" field var filter = Builders<Guitar>.Filter.Size(g => g.Models, 3); // Finds all documents that match the filter var result = guitarCollection.Find(filter).ToList(); foreach (var doc in result) { // Prints the documents in bson (json) format Console.WriteLine(doc.ToBsonDocument()); }
{ "_id" : 2, "make" : "Gibson", "models" : ["Les Paul", "SG", "Explorer"], "establishedYear" : 1902, "rating" : 8 } { "_id" : 3, "make" : "PRS", "models" : ["Silver Sky", "SE", "Custom"], "establishedYear" : 1985, "rating" : 9 } { "_id" : 4, "make" : "Kiesel", "models" : ["Ares", "Vader", "Solo"], "establishedYear" : 2015, "rating" : null }
요소 연산자
요소 연산자는 필드 의 존재 여부 또는 유형에 따라 문서 쿼리 데이터를 일치시킵니다. 다음 표에는 요소 작업을 위한 .NET/ C# 드라이버 메서드와 이에 상응하는 MongoDB Server 연산자가 나열되어 있습니다.
.NET/ C# 드라이버 메서드 | 설명 | MongoDB Server 연산자 |
---|---|---|
| 필드 값이 | |
| 지정된 필드 의 값이 지정된 BSON types의 인스턴스 인 문서를 일치합니다. |
다음 예시에서는 빌더를 사용하여 rating
필드가 있는 모든 문서와 일치하는 쿼리 필터를 만듭니다.
// Creates a filter for all documents with a populated "ratings" field var filter = Builders<Guitar>.Filter.Exists(g => g.Rating); // Finds all documents that match the filter var result = guitarCollection.Find(filter).ToList(); foreach (var doc in result) { // Prints the documents in bson (json) format Console.WriteLine(doc.ToBsonDocument()); }
{ "_id" : 1, "make" : "Fender", "models" : ["Stratocaster", "Telecaster"], "establishedYear" : 1946, "rating" : 9 } { "_id" : 2, "make" : "Gibson", "models" : ["Les Paul", "SG", "Explorer"], "establishedYear" : 1902, "rating" : 8 } { "_id" : 3, "make" : "PRS", "models" : ["Silver Sky", "SE", "Custom"], "establishedYear" : 1985, "rating" : 9 } { "_id" : 5, "make" : "Ibanez", "models" : ["RG", "AZ"], "establishedYear" : 1957, "rating" : 7 }
평가 연산자
평가 연산자는 개별 필드의 데이터 또는 컬렉션 의 모든 문서를 분석 . 다음 표에는 평가 작업을 위한 .NET/ C# 드라이버 메서드와 이에 상응하는 MongoDB Server 연산자가 나열되어 있습니다.
.NET/ C# 드라이버 메서드 | 설명 | MongoDB Server 연산자 |
---|---|---|
| 지정된 JSON schema 충족하는 문서를 일치시킵니다. | |
| 지정된 필드 제수로 나눈 값에 지정된 나머지(modulo)가 있는 문서를 일치합니다. | |
| 지정된 필드 의 값이 지정된 정규 표현식 과 일치하는 문서를 일치시킵니다. | |
| JavaScript 표현식 포함된 문자열 또는 전체 JavaScript 함수를 쿼리 시스템에 전달하는 데 사용합니다. |
다음 예시에서는 빌더를 사용하여 문자 'G'로 시작하는 make
필드에 값이 있는 모든 문서와 일치하는 쿼리 필터를 생성합니다.
// Creates a filter for all documents with a populated "ratings" field var filter = Builders<Guitar>.Filter.Regex(g => g.Make, "^G"); // Finds all documents that match the filter var result = guitarCollection.Find(filter).ToList(); foreach (var doc in result) { // Prints the documents in bson (json) format Console.WriteLine(doc.ToBsonDocument()); }
{ "_id" : 2, "make" : "Gibson", "models" : ["Les Paul", "SG", "Explorer"], "establishedYear" : 1902, "rating" : 8 }
지리 공간적 연산자
지리 공간적 연산자는 지리 공간적 표현식 조건에 따라 데이터를 반환합니다. 다음 표에는 지리 공간적 작업을 위한 .NET/ C# 드라이버 메서드와 이에 상응하는 MongoDB Server 연산자가 나열되어 있습니다.
.NET/ C# 드라이버 메서드 | 설명 | MongoDB Server 연산자 |
---|---|---|
| 지리 지리 공간적 데이터가 지정된 GeoJsonObject와 교차하는 문서를 일치시킵니다. | |
| 지리 지리 공간적 데이터가 완전히 지정된 도형 내에 있는 문서를 일치합니다. | |
| 지리 지리 공간적 데이터가 완전히 지정된 상자 내에 포함된 문서를 일치합니다. | |
| 지리 공간적 데이터가 완전히 지정된 원 내에 있는 문서를 일치시킵니다. | |
| 지리 지리 공간적 데이터가 완전히 지정된 구 내에 있는 문서를 일치합니다. | |
| 지리 지리 공간적 데이터가 완전히 지정된 다각형 내에 있는 문서를 일치합니다. | |
| 지리 공간적 쿼리 가장 가까운 문서부터 가장 먼 문서까지 반환하는 점 지정합니다. | |
| 지리 공간적 쿼리 구형 기하학에서 가장 가까운 문서부터 가장 먼 문서까지 반환하는 점 지정합니다. |
비트 연산자
비트 연산자는 비트 위치 조건에 따라 문서를 일치시킵니다. 다음 표에는 비트 연산을 위한 .NET/ C# 드라이버 메서드와 이에 상응하는 MongoDB Server 연산자가 나열되어 있습니다.
.NET/ C# 드라이버 메서드 | 설명 | MongoDB Server 연산자 |
---|---|---|
| 지정된 필드 에서 지정된 모든 비트 위치가 비워진( | |
| 지정된 필드 에 지정된 모든 비트 위치가 설정하다 ( | |
| 지정된 필드 에서 지정된 비트 위치 중 하나라도 비어 있는( | |
| 지정된 필드 에 지정된 비트 위치 중 하나라도 설정하다 ( |
기타 연산자
.NET/ C# 드라이버 필터하다 정의를 만드는 다음 메서드도 제공합니다.
.NET/ C# 드라이버 메서드 | 설명 |
---|---|
| 지정된 유형에서 파생된 유형의 문서를 일치시킵니다. 이 메서드의 오버로드를 사용하여 추가 쿼리 기준을 지정할 수 있습니다. |
| 지정된 문자열이 포함된 필드 와 문서를 일치시킵니다. |
추가 정보
이 페이지의 운전자 메서드에 대한 자세한 내용은 FilterDefinitionBuilder 클래스에<TDocument> 대한 API 설명서를 참조하세요.