mongodbの姓と名の完全一致または部分一致を検索するには? 私はmongodbの姓と名の完全一致または部分一致の検索方法
{"name":{ $regex: str, $options: 'i'}}
、これを使用してみました。しかし、それだけで、文字列の完全一致のためです。 パーシャルマッチに正規表現を使用できますか?
mongodbの姓と名の完全一致または部分一致を検索するには? 私はmongodbの姓と名の完全一致または部分一致の検索方法
{"name":{ $regex: str, $options: 'i'}}
、これを使用してみました。しかし、それだけで、文字列の完全一致のためです。 パーシャルマッチに正規表現を使用できますか?
を試してみてくださいstr.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
私はこれを試しました。エラーはありません。検索後に表示されるリストはありません。 – JMA
'text index'を作成しましたが、あなたが試したコードを表示できますか? @ジョンアレラノ –
私のプロジェクトでこれを行う必要がありますが、これはどのように機能しますか? {"name":new RegExp('^'+name, 'i')}
あなたはテキストインデックスを作成するために、より良い検索のこのタイプの場合、この
{'name': {'$regex': '.*str.*', $options: 'i'}}
文字列を最初にエンコードするのはどういう意味ですか? – JMA
@JohnArellano正規表現の文字をエスケープします。そうでなければ、 '*'や '.'のような正規表現のシンボルは正規表現として解析されます。 – ECMAScript
最初の文字列をエンコードする必要があるかもしれません。 mongo shellコマンドを使用して、名前フィールドにtext indexを作成します。
db.colectionName.createIndex({ name: "text" });
は、あなたは
name
がまたは
テスト
ジョンが含まれている場合、あなたが取得するこのクエリの$text
と$search
var text = 'John Test''
db.collectionName.find({ $text: { $search: text } });
を使って検索することができ、これは大文字と小文字を区別しません
Iであります同様の質問hereに応答し、text inde xと正規表現パターンはうまく動作します。テキストインデックスは用語で検索していますので、pad
を入力してpadavan
を検索しようとすると、text
インデックスのみを取得することは期待できません。
検索に使用している正規表現とは何ですか? – str
strは "John Test"という名前です – JMA
'str'は実際の文字列ではなく正規表現でなければなりません。 MongoDBは、Perl互換の正規表現を使用します。あなたの必要性を満たす正規表現を作成するには、http://perldoc.perl.org/perlre.htmlを参照してください。 – RaR