2016-08-01 12 views
2

den Code Lassen Sie sprechen für sich ;-)C# MongoDB Filter auf Liste <T> .Count

public class SampleObject 
{ 
    public List<string> SampleStrings {get;set;} 
} 

MongoDB bezogenen Code:

// filter on SampleStrings.Count < 5 
var filter = Builders<SampleObject>.Filter.Lt(so => so.SampleStrings.Count, 5) 

Unbehandelte Ausnahme: System.InvalidOperationException: Nicht imstande, die zu bestimmen Serialisierungsinformationen für so => ​​so.sampleStrings.Count.

Count() wird auch nicht funktionieren. Gibt es einen MongoDb Weg? Vielleicht eine, die sich perfekt in die IFluent-Schnittstelle integriert?

Antwort

1

Versuchen mit diesem:

var filter = Builders<SampleObject>.Filter.Not(
         Builders<SampleObject>.Filter.Exists(so => so.SampleStrings[4])); 

Dies wird in den folgenden Mongo db Filter Abfrage erhalten übersetzt:

"SampleStrings.4" : { "$exists" : false } 

Zu sagen, dass das Element am Index 4 nicht existiert äquivalent zu sagen Die Anzahl der Elemente sollte weniger als 5 betragen.

+1

Du hast mich zum Lachen gebracht. Du meinst das ernst, oder? :) MongoDb ist so ein kreatives Werkzeug, um mit :) zu arbeiten – lapsus