Versuchen Sie stattdessen dies
Query.ElemMatch("Children", Query.And(Query.EQ("StatusId",1), Query.EQ("Active",true),Query.LT("SubChild.ExpiresOn",DateTime.UtcNow)));
Sie fragen sich, warum diese Abfrage auf magische Weise funktioniert? Es ist der Fall (StatusId
vs StatusID
). Bei JavaScript wird zwischen Groß- und Kleinschreibung unterschieden.
Sie könnten dieses Problem beseitigen, indem Sie stark typisierte Linq-Abfragen verwenden, wie zum Beispiel:
from x in collection.AsQueryable()
where x.Children.Any(child =>
child.StatusId == 1
&& child.Active
&& child.SubChild.ExpiresOn < DateTime.UtcNow)
select x