MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB + C#-Treiber + Abfrage-Array von Elementen, wobei jedes Array-Element ein Unterdokument enthält, das abgefragt werden soll

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