5

特定の部分文字列を含むアイテムを検索しようとしていますが、結果が返されません (大文字と小文字を含め、データがクエリに適していることはわかっていますが):

collection.find({name: "/.*" + keyword + ".*/"}).toArray(function(err, items)

それはキーワードを含むすべてのものと一致するべきではありませんか? 空のオブジェクトを返すだけです。

ExpressJS アプリで通常の MongoDB ドライバーを使用しているだけです。

4

4 に答える 4

6

最初に正規表現を作成する必要があり、次のようなことを試してください。

var regex = RegExp("/.*" + keyword + ".*/")

次に、変数をクエリに渡します。一般に、クエリを変数として実行し、それを渡す方が簡単だと思います。

var query = { FieldToSearch: new RegExp('^' + keyword) };
collection.find(query).toArray(...)

インデックスを利用するために、正規表現を左ルートの正規表現として含めました (パフォーマンスのために、可能であれば常に推奨されます)。詳細については、こちらをご覧ください。

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions

于 2012-08-30T08:31:04.537 に答える