일반적인 고객 및 주문 시나리오가 있습니다. 고객 컬렉션이 있고 각 고객 문서에는 주문 목록이 있습니다. 이제 주문 날짜가 지난 주 내에있는 고객에게 질문합니다. 즉, DateTime.UtcNow.AddDays (-7)보다 크고 DateTime.UtcNow보다 작습니다.MongoDb C# Linq 질의 및 콜렉션의 자식 객체 반환
var startDate = DateTime.UtcNow.AddDays(-7);
var endDate = DateTime.UtcNow;
var query = collection.AsQueryable<Customer>()
.Where(c => c.Orders.Any(o => o.OrderDate > startDate && o.OrderDate < endDate))
.SelectMany(b => b.Orders);
이 다음과 같은 오류가 발생합니다
System.NotSupportedException: The SelectMany query operator is not supported.
at MongoDB.Driver.Linq.SelectQuery.TranslateMethodCall(MethodCallExpression methodCallExpression) in C:\\build\\mongo-csharp-driver\\Driver\\Linq\\Translators\\SelectQuery.cs:line 687
나의 현재 솔루션은 꽤 불쾌한 :
var customers =
collection.AsQueryable<Customer>()
.Where(c =>
c.Orders.Any(o =>
o.OrderDate > startDate &&
o.OrderDate < endDate))
.ToList();
var results = new List<Order>();
foreach (var orders in customer.Select(c =>
c.Orders.Where(o =>
o.OrderDate > startDate &&
o.OrderDate < endDate)))
{
results.AddRange(orders);
}
return results;
이를 달성하기 위해 더 나은 방법이 있나요?