5.MongoDBのインデックス.


前に書く
MySQLとか、マイクロソフトのMSSQLとか、oracleとか、他の関係型データベースを学んだことがあります.私たちは、データベースのインデックスが重要であることを知っています.それは私たちがデータを検索するスピードを速めることができます.データベースのインデックスは書籍のインデックスと似ています.インデックスがあれば、1ページ1ページの本をめくる必要はありません.インデックスを見るだけで、検索する内容は何ページ目ですか.すぐにデータが見つかりました.データベースでも同様です.インデックスにエントリが見つかったら、ターゲットドキュメントの場所に直接ジャンプできます.
1.インデックスの追加
前述したように、インデックスはクエリーの速度を速める機能を持っており、高同時性のソフトウェア設計では欠かせませんが、MongoDBでは、どのようにMongoDBでインデックスを作成するかについて議論します.簡単です.ensureIndexメソッドを使用します.
たとえば、usernameとidにインデックスを作成します.次のようにできます.
>db.user.ensureIndex({"user_id":1,"name:1"}) //
これでuserセットにインデックスが作成され、user_ではありません.idとname.値が1と-1はそれぞれインデックスを作成する方向を表しています.インデックスが1つのキーであれば、方向は重要ではありません.単一キーインデックスはアルファベット順に組織された書籍インデックスに似ています.A-ZからでもZ-Aからでも、明らかにMから探しています.
2.索引の管理
システムを使ってもいいです.indexesというコレクションは、インデックスを管理および表示します.
> show collections
blog
foo
system.indexes  //            。
user
>
> db.system.indexes.find()
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "php.blog", "name" : "_id_" } //"_id"      
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "php.user", "name" : "_id_" }
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "php.foo", "name" : "_id_" }
{ "v" : 1, "key" : { "user_id" : 1, "name" : 1 }, "ns" : "php.user", "name" : "user_id_1_name_1" }  //    。

3.索引の変更
以前に作成したコレクションがプロジェクトの深化に伴ってインデックスが変化する可能性があります.インデックスを変更できます.ensureIndex()も使います.
例えば控訴のuser集合は、ageをインデックスに変更したいです.では
> db.user.ensureIndex({"age":1},{"background":true}) //    ,  background:true。       ,    ,           。
> db.system.indexes.find()
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "php.blog", "name" : "_id_" }
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "php.user", "name" : "_id_" }
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "php.foo", "name" : "_id_" }
{ "v" : 1, "key" : { "user_id" : 1, "name" : 1 }, "ns" : "php.user", "name" : "user_id_1_name_1" }
{ "v" : 1, "key" : { "age" : 1 }, "ns" : "php.user", "name" : "age_1", "background" : true } //      ,      
>

4.索引の削除
dropIndexes()を使用してインデックスを削除できます.