2017-01-02 16 views
0

mongodbの姓と名の完全一致または部分一致を検索するには? 私はmongodbの姓と名の完全一致または部分一致の検索方法

{"name":{ $regex: str, $options: 'i'}} 

、これを使用してみました。しかし、それだけで、文字列の完全一致のためです。 パーシャルマッチに正規表現を使用できますか?

+0

検索に使用している正規表現とは何ですか? – str

+0

strは "John Test"という名前です – JMA

+0

'str'は実際の文字列ではなく正規表現でなければなりません。 MongoDBは、Perl互換の正規表現を使用します。あなたの必要性を満たす正規表現を作成するには、http://perldoc.perl.org/perlre.htmlを参照してください。 – RaR

答えて

1

を試してみてくださいstr.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');

+0

私はこれを試しました。エラーはありません。検索後に表示されるリストはありません。 – JMA

+0

'text index'を作成しましたが、あなたが試したコードを表示できますか? @ジョンアレラノ –

0

私のプロジェクトでこれを行う必要がありますが、これはどのように機能しますか? {"name":new RegExp('^'+name, 'i')}あなたはテキストインデックスを作成するために、より良い検索のこのタイプの場合、この

{'name': {'$regex': '.*str.*', $options: 'i'}} 
+0

文字列を最初にエンコードするのはどういう意味ですか? – JMA

+0

@JohnArellano正規表現の文字をエスケープします。そうでなければ、 '*'や '.'のような正規表現のシンボルは正規表現として解析されます。 – ECMAScript

0

最初の文字列をエンコードする必要があるかもしれません。 mongo shellコマンドを使用して、名前フィールドにtext indexを作成します。

db.colectionName.createIndex({ name: "text" }); 

は、あなたは nameがまたは テスト ジョンが含まれている場合、あなたが取得するこのクエリの$text$search

var text = 'John Test'' 
db.collectionName.find({ $text: { $search: text } }); 

を使って検索することができ、これは大文字と小文字を区別しません

0

Iであります同様の質問hereに応答し、text inde xと正規表現パターンはうまく動作します。テキストインデックスは用語で検索していますので、padを入力してpadavanを検索しようとすると、textインデックスのみを取得することは期待できません。

関連する問題