Hãy thử cái này thay thế
Query.ElemMatch("Children", Query.And(Query.EQ("StatusId",1), Query.EQ("Active",true),Query.LT("SubChild.ExpiresOn",DateTime.UtcNow)));
Tự hỏi tại sao truy vấn này hoạt động một cách kỳ diệu? Đó là trường hợp (StatusId
so với StatusID
). JavaScript phân biệt chữ hoa chữ thường.
Bạn có thể loại bỏ vấn đề này bằng cách sử dụng các truy vấn Linq được gõ mạnh, như:
from x in collection.AsQueryable()
where x.Children.Any(child =>
child.StatusId == 1
&& child.Active
&& child.SubChild.ExpiresOn < DateTime.UtcNow)
select x