MongoDB .NET driver and text search

use*_*059 3 linq mongodb

I am using this MongoDB driver: https://mongodb.github.io/mongo-csharp-driver/ and I would like to search using a text index, which (I think) is created on all text fields like so:

{
    "_fts" : "text",
    "_ftsx" : 1
}
Run Code Online (Sandbox Code Playgroud)

I am using linq queries to filter the data, example:

MongoClient client = new MongoClient(_mongoConnectionString);
IMongoDatabase mongoDatabase = client.GetDatabase(DatabaseName);
var aCollection = mongoDatabase.GetCollection<MyTypeSerializable>(CollectionName);

IMongoQueryable<MyTypeSerializable> queryable = aCollection.AsQueryable()
                .Where(e=> e.Field == 1);
var result = queryable.ToList();
Run Code Online (Sandbox Code Playgroud)

How do I utilize the text search using this method?

The*_*est 8

寻找解决方案我找到了FilterDefinition<T>.Inject()扩展方法。所以我们可以更深入地创建一个更多的扩展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());
    }
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

IMongoDatabase database = GetMyDatabase();

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

希望这对某人有所帮助:)