Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
C#/ .NET 드라이버
/ /

쿼리 필터 만들기

이 가이드 에서는 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");

참고

guitars 컬렉션의 문서는 카멜 케이스 명명 규칙을 사용합니다. 이 가이드의 예시에서는 ConventionPack 사용하여 컬렉션의 필드를 파스칼식 대/소문자로 역직렬화하고 Guitar 클래스의 속성에 매핑합니다.

사용자 지정 클래스 생성 및 직렬화에 대해 자세히 학습 다음 페이지를 참조하세요.

  • POCO

  • 클래스 매핑

  • 직렬화

  • 다형성 객체

빈 쿼리 필터하다 컬렉션 의 모든 문서와 일치합니다. 다음 예시 빈 쿼리 필터하다 만드는 방법을 보여 줍니다.

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 연산자

Eq()

==

지정된 필드 의 값이 쿼리 값과 같은 문서를 일치합니다.

Gt()

>

지정된 필드 의 값이 쿼리 값보다 큰 문서를 일치합니다.

Gte()

>=

지정된 배열 필드 의 요소가 쿼리 값보다 크거나 같은 문서를 일치합니다.

In()

N/A

지정된 배열 필드 의 요소가 쿼리 배열 의 값과 일치하는 문서를 일치합니다.

Lt()

<

지정된 배열 필드 의 요소가 쿼리 값보다 작은 문서를 일치합니다.

Lte()

<=

지정된 배열 필드 의 요소가 쿼리 값보다 작거나 같은 문서를 일치합니다.

Ne()

!=

지정된 배열 필드 의 요소가 쿼리 값과 같지 않은 문서를 일치합니다.

Nin()

N/A

다음 중 하나에 해당하는 문서를 일치시킵니다.

  • 지정된 배열 필드 의 요소 중 쿼리 배열 의 값과 일치하는 요소가 없습니다.

  • 지정된 필드 존재하지 않습니다.

StringIn()

N/A

지정된 필드 의 문자열 값이 쿼리 배열 의 문자열 값과 일치하는 문서를 일치합니다.

StringNin()

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 연산자

And()

&&

모든 표현식이 참으로 평가되는 문서를 일치시킵니다.

Or()

||

하나 이상의 표현식이 참으로 평가되는 문서를 일치시킵니다.

다음 예시 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 연산자

All()

지정된 배열 필드 의 값이 모든 쿼리 값과 일치하는 문서를 일치시킵니다.

AnyEq()

지정된 배열 필드 의 요소가 쿼리 값과 일치하는 문서를 일치합니다.

AnyGt()

지정된 배열 필드 의 요소가 쿼리 값보다 큰 문서를 일치합니다.

AnyGte()

지정된 배열 필드 의 요소가 쿼리 값보다 크거나 같은 문서를 일치합니다.

AnyIn()

지정된 배열 필드 의 요소가 쿼리 배열 의 값과 일치하는 문서를 일치합니다.

AnyLt()

지정된 배열 필드 의 요소가 쿼리 값보다 작은 문서를 일치합니다.

AnyLte()

지정된 배열 필드 의 요소가 쿼리 값보다 작거나 같은 문서를 일치합니다.

AnyNe()

지정된 배열 필드 의 요소가 쿼리 값과 같지 않은 문서를 일치합니다.

AnyNin()

다음 중 하나에 해당하는 문서를 일치시킵니다.

  • 지정된 배열 필드 의 요소가 쿼리 배열 에 없습니다.

  • 지정된 필드 존재하지 않습니다.

AnyStringIn()

지정된 배열 필드 의 문자열 요소가 쿼리 배열 의 문자열 값과 일치하는 문서를 일치합니다.

AnyStringNin()

다음 중 하나에 해당하는 문서를 일치시킵니다.

  • 지정된 배열 필드 의 문자열 요소가 쿼리 배열 에 없습니다.

  • 지정된 필드 존재하지 않습니다.

ElemMatch()

지정된 배열 필드 의 요소가 쿼리 기준과 일치하는 문서를 일치합니다.

Size()

지정된 배열 필드 지정된 크기인 문서를 일치시킵니다.

SizeGt()

지정된 배열 필드 지정된 크기보다 큰 문서를 일치합니다.

SizeGte()

지정된 배열 필드 지정된 크기보다 크거나 같은 문서를 일치합니다.

SizeLt()

지정된 배열 필드 지정된 크기보다 작은 문서를 일치시킵니다.

SizeLte()

지정된 배열 필드 지정된 크기보다 작거나 같은 문서를 일치합니다.

다음 예시 빌더 사용하여 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 연산자

Exists()

필드 값이 null인 문서를 포함하여 지정된 필드 포함하거나 포함하지 않는 문서를 일치합니다.

Type()

지정된 필드 의 값이 지정된 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 연산자

JsonSchema()

지정된 JSON schema 충족하는 문서를 일치시킵니다.

Mod()

지정된 필드 제수로 나눈 값에 지정된 나머지(modulo)가 있는 문서를 일치합니다.

RegEx()

지정된 필드 의 값이 지정된 정규 표현식 과 일치하는 문서를 일치시킵니다.

Where()

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 연산자

GeoIntersects()

지리 지리 공간적 데이터가 지정된 GeoJsonObject와 교차하는 문서를 일치시킵니다.

GeoWithin()

지리 지리 공간적 데이터가 완전히 지정된 도형 내에 있는 문서를 일치합니다.

GeoWithinBox()

지리 지리 공간적 데이터가 완전히 지정된 상자 내에 포함된 문서를 일치합니다.

GeoWithinCenter()

지리 공간적 데이터가 완전히 지정된 원 내에 있는 문서를 일치시킵니다.

GeoWithinCenterSphere()

지리 지리 공간적 데이터가 완전히 지정된 구 내에 있는 문서를 일치합니다.

GeoWithinPolygon()

지리 지리 공간적 데이터가 완전히 지정된 다각형 내에 있는 문서를 일치합니다.

Near()

지리 공간적 쿼리 가장 가까운 문서부터 가장 먼 문서까지 반환하는 점 지정합니다.

NearSphere()

지리 공간적 쿼리 구형 기하학에서 가장 가까운 문서부터 가장 먼 문서까지 반환하는 점 지정합니다.

비트 연산자는 비트 위치 조건에 따라 문서를 일치시킵니다. 다음 표에는 비트 연산을 위한 .NET/ C# 드라이버 메서드와 이에 상응하는 MongoDB Server 연산자가 나열되어 있습니다.

.NET/ C# 드라이버 메서드
설명
MongoDB Server 연산자

BitsAllClear()

지정된 필드 에서 지정된 모든 비트 위치가 비워진(0) 문서를 일치합니다.

BitsAllSet()

지정된 필드 에 지정된 모든 비트 위치가 설정하다 (1) 문서를 일치합니다.

BitsAnyClear()

지정된 필드 에서 지정된 비트 위치 중 하나라도 비어 있는(0) 문서를 일치합니다.

BitsAnySet()

지정된 필드 에 지정된 비트 위치 중 하나라도 설정하다 (1) 문서를 일치합니다.

.NET/ C# 드라이버 필터하다 정의를 만드는 다음 메서드도 제공합니다.

.NET/ C# 드라이버 메서드
설명

OfType()

지정된 유형에서 파생된 유형의 문서를 일치시킵니다. 이 메서드의 오버로드를 사용하여 추가 쿼리 기준을 지정할 수 있습니다.

Text()

지정된 문자열이 포함된 필드 와 문서를 일치시킵니다.

이 페이지의 운전자 메서드에 대한 자세한 내용은 FilterDefinitionBuilder 클래스에<TDocument> 대한 API 설명서를 참조하세요.

돌아가기

문서 쿼리

이 페이지의 내용