2

それで、私は MongoDB に足を踏み入れることに決め、今のところ気に入っています。非常に高速で柔軟に見えます。これは素晴らしいことです。しかし、私はまだ最初の学習曲線を通過しているので、最も基本的なことに関する情報を探すのに何時間も費やしています.

私はMongoDBのオンラインドキュメント全体を検索し、これについて言及せずにページをグーグルで検索するのに何時間も費やしました. Mongo はまだ非常に新しい (v1.x) ことを知っているので、まだあまり情報がない理由を説明しています。あまり運がなくても、Mongo に関する本を探してみました。そうです、RTM を試みましたが運が悪かったので、今度はあなたに頼ります。

各ドキュメントにネストされたさまざまなハッシュタグの配列 (つまり、#apples、#oranges、#Apples、#APPLES) があり、大文字と小文字を区別しない find() を実行して、いずれにしてもリンゴを含むすべてのドキュメントにアクセスしたいと考えています。find は /i でいくつかの正規表現をサポートしているようですが、これも機能していないようです。

とにかく、これが誰かにとって素早い答えであることを願っています。

大文字と小文字を区別するPHPでの既存の呼び出しは次のとおりです。

$cursor = $collection->find(array( "hashtags" => array("#".$keyword)))->sort(array('$natural' => -1))->limit(10);

ヘルプ?

4

2 に答える 2

0

あなたのクエリがあなたが本当に欲しいものを返さないのではないかと思います...

もし、するなら

db.col.find( { some_array_field: ["item1", "item2"] } );

その場合、some_array_fieldにこれら2つの項目が正確に含まれているドキュメントにのみ一致します。したがって、[item1、item2]ハッシュタグが付いたドキュメントは一致しますが、[item1、item2、item3]タグが付いたドキュメントは一致しません。

この投稿で説明されているように、$all引数を使用できます。

mongodbの配列に対してANDクエリをどのように実行しますか?

例えば

db.col.find( { some_array_field: { $all : ["item1", "item2"] } } );

また:

db.col.find( { some_array_field: "item1", some_array_field: "item2" } );

この完全なドキュメントの一致と部分的な一致の区別は、最初はMongoDBで本当に混乱していました。

于 2010-11-18T15:58:37.350 に答える
0

大文字と小文字を区別しない検索の例を次に示しmongodbますphp

$search_string='baR';

$searchQuery = array(
            '$or' => array(
                array(
                    'field1' => new MongoRegex("/^$search_string/i"),
                    ),
                array(
                    'field2' => new MongoRegex("/^$search_string/i"),
                    ),
                )
            );

$cursor = $customers->find($searchQuery);

これが役立つことを願っています。

于 2014-10-27T06:16:11.777 に答える