MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Driver MongoDB .NET e pesquisa de texto


Procurando por solução, encontrei FilterDefinition<T>.Inject() extension method. Assim, podemos ir mais fundo e criar mais uma extensão em IMongoQueryable<T> :
public static class MongoQueryableFullTextExtensions
{
    public static IMongoQueryable<T> WhereText<T>(this IMongoQueryable<T> query, string search)
    {
        var filter = Builders<T>.Filter.Text(search);
        return query.Where(_ => filter.Inject());
    }
}

E use assim:
IMongoDatabase database = GetMyDatabase();

var results = database
    .GetCollection<Blog>("Blogs")
    .AsQueryable()
    .WhereText("stackoverflow")
    .Take(10)
    .ToArray();

Espero que isso ajude alguém :)