2013-06-28 27 views
10

たとえば、myキーワードが "all"の場合、MongoDbは、 "edgar allan poe"や "whitney hall"のような "all"という単語を含むフィールド内のすべてのドキュメントを返すようにしたいと思います。 MongoDbでどうすればいいですか?私は何日もここにこだわっているので、どんな助けでも大いに感謝されるでしょう:)ワイルドカード文字を使ってMongodbを検索するにはどうすればよいですか?

答えて

17

正規表現を使用してください。 MongoDbには$regexの演算子があります。

db.authors.find({name: {$regex: 'all', $options: 'i'}}); 

正規表現操作ではインデックスを使用できないため、find()操作は効率的ではありません。唯一の接頭語のために使用することができるインデックス(から始まる)と、このクエリのような大文字と小文字を区別マッチ:

db.authors.find({name: {$regex: '^a'}); 
+3

すべてで非常にうまくスケールするつもりはないので、これは、インデックスを使用しないことは注目に値します。 –

+1

文字列の先頭を検索する場合にのみ、正規表現にインデックスを使用します: '^ test' – moka

+1

最後に'} 'がありません。 'db.authors.find({name:{$ regex: 'all'、$ options: 'i'}}))'を読み込む必要があります。 –

関連する問題