1

私はMongoDBと正規表現に非常に慣れていないので、ご容赦ください。MongoDBのドキュメントには、正規表現で検索するための例があります。

http://docs.mongodb.org/manual/reference/operators/#_S_regex

ただし、あらかじめ決められたキーの値を検索する方法のみを示しています。コレクション内のすべての値を検索するクエリを作成する方法がわかりません。誰かがそれを指摘できれば、それは素晴らしいことです。

4

1 に答える 1

0

DBのサイズ(またはパフォーマンス)を気にしない場合は、mapReduce関数を使用して、データをより簡単に検索できる構造に非正規化することができます。ただし、コレクションのすべてのデータを複製するため、これによりDBのサイズが大幅に増加します。

擬似コード:

// recursive
// building a full property path
for(var key in obj) {
    emit(this._id, { orig: obj[key], src: path + "." + key });
    // recursive call emitChildren(path, key)
}

データの複雑さに応じて、それは合理的かもしれません。

または、$ whereを使用して、すべてのドキュメントの各キー/値に対して正規表現を実行できる場合があります($ whereを使用すると任意のJavaScriptを実行できるため)。

コレクション内のすべてのドキュメントのすべての値に対して正規表現を実行している場合、オプションは(組み込みオプションでさえ)うまく機能せず、mongoDBの長所を発揮しません。

于 2013-01-01T22:27:47.167 に答える