MongoDBの高度なインデックス作成
以下の文書コレクション(ユーザー)を考えてみましょう:
{ "address": { "city": "Los Angeles", "state": "California", "pincode": "123" }, "tags": [ "music", "cricket", "blogs" ], "name": "Tom Benzamin" }
上記の文書は、サブ文書が含まれており、タグの配列を扱います。
インデックス付き配列フィールド
我々は我々がインデックスに収集配列タグを必要とするユーザーベースのラベルを取得するとします。
配列のインデックス、インデックス付きの順番に各フィールドのためのニーズの配列を作成します。 我々は配列タグのインデックスを作成するときに、それは別のインデックスを確立するために、音楽、クリケット、ブログ3の値を提供します。
配列のインデックスを作成し、次のコマンドを使用します。
>db.users.ensureIndex({"tags":1})
インデックスを作成した後、我々は、タグフィールドのコレクションを取得することができます。
>db.users.find({tags:"cricket"})
私たちはあなたに説明してコマンドを使用することができ、インデックスの使用を確認するために使用しました:
>db.users.find({tags:"cricket"}).explain()
それはインデックスが使用されていると述べ、「BtreeCursorのtags_1」:上記のコマンドの結果は、「カーソル」と表示されます。
インデックスサブ文書のフィールド
これらのフィールドは、フィールドのサブ文書であるとして、我々は、ドキュメントを取得するために市、州、PINコードのフィールドを必要とするので、私たちは、サブ文書のインデックス作成が必要とします。
次のようにドキュメントの3サブフィールドのインデックスを作成し、コマンドは次のとおりです。
>db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})
インデックスが作成されると、我々は、データサブ文書を取得するためにフィールドを使用することができます。
>db.users.find({"address.city":"Los Angeles"})
指定したインデックスの順序に従わなければならないクエリ式を覚えておいてください。 したがって、上記の作成したインデックスは次のクエリをサポートします:
>db.users.find({"address.city":"Los Angeles","address.state":"California"})
また、次のクエリをサポートしています。
>db.users.find({"address.city":"LosAngeles","address.state":"California","address.pincode":"123"})