1

MongoDBを使い始めたばかりです!ここでサポートされているさまざまな検索機能を試してみました。

次のオプションを使用してname=MongoDBを含むドキュメントを検索できます(大文字と小文字は関係ありません)-goDB、Mongogo。次のオプションでドキュメントを検索するために作業します-Mon*DB、* on*DB。つまり、同じ検索テキストに複数のワイルドカードが含まれています。

どんなポインタでもいただければ幸いです!

4

1 に答える 1

6

Mongo のフィールドで正規表現の一致を実行できます。最初のパターンを実行する方法は次のとおりです。

Pattern p = Pattern.compile("Mon.*DB", CASE_INSENSITIVE);
BasicDBObject query = new BasicDBObject("name", p);

// finds all records with "name" matching /Mon.*DB/i
DBCursor cursor = collection.find(query);

ただし、多くの正規表現の一致では、完全なテーブル スキャンが必要になることに注意してください。これは、大規模なコレクションに対してそれらを実行する場合、エンジンはすべてのドキュメントを反復処理し (おそらくディスクにヒットする)、一致するかどうかを個別にチェックする必要があることを意味します。これは、インデックスを使用するクエリよりもはるかに遅くなります。

インデックスにヒットする唯一の正規表現は、大文字と小文字を区別するプレフィックスの一致です。このようにすべての「Mon*」を検索し、インデックスを使用できます。

Pattern p = Pattern.compile("^Mon.*");
BasicDBObject query = new BasicDBObject("name", p);

// finds all records with "name" matching /^Mon.*/
DBCursor cursor = collection.find(query);
于 2012-07-19T02:13:51.843 に答える