-1

How can I apply this Regex filter on all fields :

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();
Mehdiway
  • 10,337
  • 8
  • 36
  • 68

1 Answers1

0

Apparently you can't do that even directly in the console using native MongoDB syntax (refer here)

So I ended up mentioning all the fields and ORing the filters like so :

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();
Mehdiway
  • 10,337
  • 8
  • 36
  • 68