반응형
Mongo C# 드라이버 - 중첩을 사용하여 동적으로 필터 구축
내포된 식을 가정합니다.
여기서 a = 1 AND (b = 4 OR b = 5 )
여러 Builder 개체를 사용하고 이러한 식을 사용하여 전체 필터를 작성하는 방법은 무엇입니까?
Builders정말 유연한 클래스이며, "& = AND" 및 "| = OR" 연산자를 재정의하기도 합니다.
당신의 예는 다음과 같습니다.
var filter = Builders<User>.Filter.Eq(x => x.A, "1");
filter &= (Builders<User>.Filter.Eq(x => x.B, "4") | Builders<User>.Filter.Eq(x => x.B, "5"));
조건부로 필터를 추가하려면 다음 방법을 사용합니다.
var builder = Builders<Student>.Filter;
var filter = builder.Empty;
if (!string.IsNullOrWhiteSpace(firstName))
{
var firstNameFilter = builder.Eq(x => x.FirstName, firstName);
filter &= firstNameFilter;
}
if (!string.IsNullOrWhiteSpace(lastName))
{
var lastNameFilter = builder.Eq(x => x.LastName, lastName);
filter &= lastNameFilter;
}
if (minAge != null && maxAge != null)
{
var ageFilter = builder.And(builder.Gt(x => x.Age, minAge),
builder.Lt(x => x.Age, maxAge));
filter &= ageFilter;
}
var result = await _plpResultCollection.Find(filter).ToListAsync();
이렇게 아주 간단하게 사용할 수 있습니다...
var filter = Builders<Rental>.Filter.Where(s => s._id== id && s.Price==1500);
언급URL : https://stackoverflow.com/questions/32227284/mongo-c-sharp-driver-building-filter-dynamically-with-nesting
반응형
'programing' 카테고리의 다른 글
| 스위프트 3, 스위프트 4 등에서 어떻게 sync, dispatch_async, dispatch_after 등을 디스패치합니까? (0) | 2023.05.12 |
|---|---|
| HttpClientBaseAddress가 작동하지 않는 이유는 무엇입니까? (0) | 2023.05.12 |
| 프로그램이 복구를 시도하지 않아야 하는 예외는 무엇입니까? (0) | 2023.05.12 |
| MongoDB - 집계를 사용하여 배열 해제 및 중복 제거 (0) | 2023.05.07 |
| 에서 밀리초 단위로 잘라내는 방법.NET 날짜 시간 (0) | 2023.05.07 |