2012-05-10 7 views
0

埋め込みオブジェクトに含まれるデータをクエリする必要があります。問題は、組み込みオブジェクトに未知の構造があることです。
例:「someB」を検索する際に埋め込みオブジェクトで検索するクエリ

{"field_1": "val_1", "embedded": {"random1": "someA" }} 
{"field_1": "val_2", "embedded": {"random2": "someB" }} 
{"field_1": "val_3", "embedded": {"random3": "someC" }} 

私は2番目の文書を入手できるようにする必要があり

任意のアイデア私は未知の構造を持っている組み込みdocumnetで検索することができますか?私は正規表現のクエリを使用ハードコードされたオブジェクトの

PS:

{'$regex': '.*%s.*' % search_for} 

答えて

3

がどのように未知の構造を照会するつもりですか?あまりスキーマレスなアプローチを取っているかもしれません。

おそらく自分で逆インデックスを作成して維持する必要があります。つまり、次のような別のコレクションストア文書にあります。

{value: 'someB', stored_in_object:"object id here", path:'embedded.random2'} 

また、フルテキスト検索エンジンが役立つかもしれません。

または、スキーマを再考する必要があります。

+0

これは、ユーザー定義のフィールドを持つオブジェクトです – kilonet

0

スキーマフィールドに正規表現を適用することはできません。クエリするドキュメント/サブ文書の完全な点線の名前を指定する必要があります。それ以外の場合は、検索対象のアイテムをクエリ可能なよく知られたフィールドに集約する必要があります。しかし、MongoDBは、私のひどい駄目なデータスキーマに格納されたすべてのものを見つけるための解決策ではありません。

関連する問題