[CS] MongoDB Index Day-56
2529 ワード
格納されたデータが大きいほど、クエリーの結果を待つ時間が長くなります.インデックスは、クエリの速度が遅いことを解決する方法です.
各オブジェクトの位置が表示されている場所で、そのオブジェクトが言及したページに直接移動できる場合は、それでいいです.
たとえば、「iphone」を探すためにすべてのページを検索するよりも、
MongoDBではIndexも同様の役割を果たしている.
Indexをブラウズしやすい形式で保存する必要があるからです.
ex)people collectionで身長180 cmの人を探して体重順に並べたいとき
height、weightに基づいて複数のインデックスを作成する場合は、すべてのドキュメントをクエリーする必要はありません.
ex)実戦例-2(身長170未満の人を探したい場合)
インデックスを作成するには、createIndex()というメソッドを使用します.
インデックスを適用するフィールドをcreateIndexのパラメータとします.
指定した値が1の場合は昇順、-1の場合は降順となります.
(属性を追加することもできます.)
例
ex)user idフィールドのインデックスを、重複値のない唯一のフィールドとして作成します.
インデックスを特定のDocumentにのみ適用するDocument条件を指定します.
Partialを使用すると、必要な場所でインデックスを使用するだけで効率的にクエリーできます.
そのためには、「部分FilterExpression」オプションを使用します.
foresters Collectionでは、2つのフィールドcuiseとnameを使用して複数のインデックスを作成します.4点以上のDocumentにのみ適用されます.
DateまたはDateアレイタイプのフィールドにのみ適用されます.
特定時間後にDocument Collectionから削除します.
TTL属性をIndexに追加し、lastModifiedDateとの間隔が3600秒を超えるとDocument Collectionから削除します.
生成されたインデックスをクエリーするときにgetIndexesメソッドを使用します.
削除時にdropIndexを使用します.
ex)クエリ生成インデックスの場合
Index
各オブジェクトの位置が表示されている場所で、そのオブジェクトが言及したページに直接移動できる場合は、それでいいです.
たとえば、「iphone」を探すためにすべてのページを検索するよりも、
MongoDBではIndexも同様の役割を果たしている.
Indexをブラウズしやすい形式で保存する必要があるからです.
ex)people collectionで身長180 cmの人を探して体重順に並べたいとき
db.people.find({"height": 180}).sort("weight": 1).pretty();
上のクエリはpeopleという名前の集合の中で身長180の人を見つけて、体重順に並べます.height、weightに基づいて複数のインデックスを作成する場合は、すべてのドキュメントをクエリーする必要はありません.
ex)実戦例-2(身長170未満の人を探したい場合)
db.people.find({"height": {$lt: 170}});
createIndex
インデックスを作成するには、createIndex()というメソッドを使用します.
インデックスを適用するフィールドをcreateIndexのパラメータとします.
指定した値が1の場合は昇順、-1の場合は降順となります.
(属性を追加することもできます.)
例
db.collection.createIndex({<필드명>:1}, {<property>: true})
Unique(ユニーク)をidフィールドに追加できます。1つの値しか存在しないプロパティ。
ex)user idフィールドのインデックスを、重複値のない唯一のフィールドとして作成します.
db.members.createIndex({"user_id": 1}, {unique: true})
Partial
インデックスを特定のDocumentにのみ適用するDocument条件を指定します.
Partialを使用すると、必要な場所でインデックスを使用するだけで効率的にクエリーできます.
そのためには、「部分FilterExpression」オプションを使用します.
foresters Collectionでは、2つのフィールドcuiseとnameを使用して複数のインデックスを作成します.4点以上のDocumentにのみ適用されます.
db.restaurants.createIndex({"cuisine":1, "name":1}, {partialFilterExpression: {rating:{$gt:4}}})
TTL (Time To Live)
DateまたはDateアレイタイプのフィールドにのみ適用されます.
特定時間後にDocument Collectionから削除します.
TTL属性をIndexに追加し、lastModifiedDateとの間隔が3600秒を超えるとDocument Collectionから削除します.
db.eventLog.createIndex({"lastModifiedDate": 1}, {expireAfterSeconds: 3600})
getIndexes, dropIndex
生成されたインデックスをクエリーするときにgetIndexesメソッドを使用します.
削除時にdropIndexを使用します.
ex)クエリ生成インデックスの場合
db.collection.getIndexes()
ex)インデックスを削除する場合db.collection.dropIndex(name);
![](https://s1.md5.ltd/image/d98f8ffc20aadc033b3b493f1c63968b.jpeg)
Reference
この問題について([CS] MongoDB Index Day-56), 我々は、より多くの情報をここで見つけました https://velog.io/@cptkuk91/CS93テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol