2011-07-17 20 views
1

私は 'NM' で 'イプサム' 'はAMET' ANDません含まれている含まれている要素を見つけるためにどのようにこの"LIKE"と "NOT LIKE"でMongoDBを照会するには?

array(
    'ts' : 123456789, 
    'nm' : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' 
) 
... 
array(
    'ts' : 122345678, 
    'nm' : 'Nulla lorem purus, pretium porttitor ultricies sit amet, rutrum sollicitudin risus.' 
) 

ような配列をしましたか? 「amet」と「ipsum」の両方の要素をどのように見つけるか?

+2

は、あなたの質問に「解決」を書き込まないでください。答えを投稿する。 –

+0

解決策が投稿されました – dobeerman

+0

ありがとうございます。そして、それがあなたと一緒に行ったものなら、通常、それを自己受け入れます。 –

答えて

2

MY SOLUTION

array(
    'nm' => array(
    '$all' => array(new MongoRegex('/amet/'), ...), 
    '$nin' => array(new MongoRegex('/ipsum/'), ...) 
) 
) 
2

LIKEにモンゴが持っている最も近いものは正規表現です:

db.my_collection.find({nm: /amet/}) 

が、私はあなたが含まれていると、含まれていない両方のキャプチャ単一の正規表現を書くことができない限り、あなたが求めるものを行うことができるとは思いませんあなたの質問の一部。

つまり、LIKEと同じように、Mongoの正規表現のクエリは機能しません。あなたは、フルテキスト検索が必要な場合は、Solrのようなもの、または内蔵のフルテキストインデックスを持つデータベースに目を向ける必要があります。

関連する問題