2017-10-13 6 views
0

私はC#でMongoDBを使用しています。 「知識」コレクションの「質問」を検索するには、これは私のコードです。C#ドライバを使用したMongoDBテキスト検索2.4.4

var collection = _database.GetCollection<BsonDocument>("knowledge"); 
var filter = Builders<BsonDocument>.Filter.Eq("question", question); 
var results = await collection.Find(filter).ToListAsync(); 

この代わりに、指定した単語を含む「質問」を検索したいと考えています。私はMongoDBの次のようなパターンを検索したいと思っています。

db.stores.find({ $text: { $search: "java \"coffee shop\"" } }) 

スタックでこれが見つかりました。

collection.Indexes.CreateOne(Builders<searchFileByAuthor>.IndexKeys.Text(x=>x.subject)); 
collection.Find(Builders<searchFileByAuthor>.Filter.Text("coffe")).ToList(); 

Full text search in mongodb in .net

でも、私はC#でのMongoDBを使用に慣れていないです。テキストインデックスを作成してパターンを検索するためにコードを変更するにはどうすればよいですか?どのようにMongoDB .NET Driverバージョン2.4.4でこれを行うには?

答えて

1

検索パターンを作成するには、Regex Builderを使用できます。説明欄の「java」または「coffee shop」と一致する例:

var collection = _database.GetCollection<BsonDocument>("knowledge"); 
var builder = Builders<BsonDocument>.Filter; 
var filter = builder.Regex("description", "(java)") | builder.Regex("description", "(coffee shop)"); 
var result = collection.Find(filter).ToList(); 
+0

これは私のために働いていました。ありがとう。しかし、大規模なコレクションを検索しなければならないとき、パフォーマンスが低下しますか? (テキストインデックスによる検索と比較して) –

関連する問題