2017-07-11 2 views
-1

Wie kann ich diese Regex-Filter in allen Bereichen anwenden:MongoDB C# - Wie bewerbe ich Filter auf alle Felder

var collection = _DB.GetCollection<BsonDocument>(table); 

FilterDefinition<BsonDocument> filter = Builders<BsonDocument>.Filter.Regex(__ANY FIELD__, BsonRegularExpression.Create(new Regex(".*" + searchString + ".*", RegexOptions.IgnoreCase))); 

var documents = await collection.Find(filter).ToListAsync(); 

Antwort

0

Anscheinend kann man nicht tun, auch direkt in der Konsole mit nativen MongoDB Syntax (refer here)

so landete ich alle Felder zu erwähnen und ODER-Verknüpfung der Filter wie folgt:

var collection = _DB.GetCollection<BsonDocument>(table); 

FilterDefinition<BsonDocument> filter; 

foreach (Field field in allFields) 
{ 
    if (filter == null) 
     filter = Builders<BsonDocument>.Filter.Regex(field.Name, BsonRegularExpression.Create(new Regex(".*" + searchString + ".*", RegexOptions.IgnoreCase))); 
    else 
     filter = filter | Builders<BsonDocument>.Filter.Regex(col.Name, BsonRegularExpression.Create(new Regex(".*" + searchString + ".*", RegexOptions.IgnoreCase))); 
} 

var documents = await collection.Find(filter).ToListAsync(); 
Verwandte Themen