MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB + driver C# + array di elementi di query in cui ogni elemento dell'array contiene documenti secondari su cui eseguire query

Prova invece questo

Query.ElemMatch("Children", Query.And(Query.EQ("StatusId",1), Query.EQ("Active",true),Query.LT("SubChild.ExpiresOn",DateTime.UtcNow)));

Ti chiedi perché questa query funziona magicamente? È il caso (StatusId vs StatusID ). JavaScript fa distinzione tra maiuscole e minuscole.

È possibile eliminare questo problema utilizzando query Linq fortemente tipizzate, come:

from x in collection.AsQueryable()
where x.Children.Any(child => 
    child.StatusId == 1 
    && child.Active 
    && child.SubChild.ExpiresOn < DateTime.UtcNow)
select x