MongoDBでは、createIndex()を使用してコレクションにインデックスを作成できます。 メソッド、createIndexes() メソッド、またはcreateIndexes 管理コマンド。
createIndex() 方法
db.collection.createIndex() メソッドは、指定されたコレクションにインデックスを作成します。 createIndexesのラッパーです 管理コマンド。
例:
db.pets.createIndex( { weight: -1 } )
これにより、ペットコレクションにインデックスが作成されます。 weightの降順のインデックスです 分野。 -1を指定したため、降順であることがわかります 。 1を指定した場合 上昇していたでしょう。
複合インデックスは、複数のフィールドで定義されているインデックスです。各フィールドをコンマで区切ることにより、複合インデックスを作成できます。
例:
db.pets.createIndex( { name: 1, type: -1 } )
これにより、nameに複合インデックスが作成されます フィールド(昇順)とtype フィールド(降順)。
createIndexes() 方法
db.collection.createIndexes() メソッドは、コレクションに1つ以上のインデックスを作成します。このメソッドは、createIndexesのラッパーでもあります。 管理コマンド。
createIndexes()を使用してインデックスを作成する場合 メソッドでは、配列内のフィールドを提供する必要があります。インデックスを1つだけ作成する場合でも、これを行う必要があります。
例:
db.pets.createIndexes( [ { weight: -1 } ] )
これは、最初の例と同じことを行います。 weightに降順のインデックスを作成します フィールド。
複数のインデックスを作成するには、各インデックスのドキュメントをカンマで区切ります。
例:
db.pets.createIndexes( [ { name: 1 }, { weight: -1 } ] )
createIndexes()を使用して複合インデックスを作成することもできます 。これを行うには、そのインデックスのドキュメント内で複合インデックスを定義するだけです。
したがって、次のことができます。
db.pets.createIndexes( [ { name: 1, type: -1 }, { weight: -1 } ] )
これにより、nameの複合インデックスが作成されます およびtype フィールド、およびweightの個別のインデックス フィールド。
createIndexes コマンド
createIndexes 管理コマンドは、コレクションに1つ以上のインデックスを作成します。前の2つのメソッドは、このコマンドのラッパーです。
したがって、createIndexesを使用できます 前の例で行ったインデックスを作成するコマンド。
nameにインデックスを作成する例を次に示します。 フィールド:
db.runCommand(
{
createIndexes: "pets",
indexes: [
{
key: { "name" : 1 },
name: "idx_name_1"
}
]
}
)
前の例では、MongoDBにインデックスに名前を付けさせましたが、この場合、インデックスにidx_name_1という名前を付けました。 。
複数のインデックスを作成する例を次に示します。
db.runCommand(
{
createIndexes: "pets",
indexes: [
{
key: { "name" : 1, type: -1 },
name: "idx_name_1_type_-1"
},
{
key: { "weight" : -1 },
name: "idx_weight_-1"
}
]
}
)
この場合、最初のインデックスはnameの複合インデックスです。 およびtype フィールドに名前を付け、idx_name_1_type_-1 。
2番目のインデックスはweightにあります フィールドと呼び、idx_weight_-1 。
ワイルドカードインデックス
上記の3つのアプローチはすべて、MongoDB 4.2(featureCompatibilityVersion)の時点でワイルドカードインデックスをサポートしています。 少なくとも4.2である必要があります ワイルドカードインデックスを作成します。
ワイルドカードインデックスは、さまざまな階層のさまざまなフィールドを持つ非構造化データを含むコレクションに役立ちます。
例については、MongoDBでワイルドカードインデックスを作成する方法を参照してください。
MongoDBドキュメント
以下は、上記のそれぞれのMongoDBドキュメントへのリンクです。
-
db.collection.createIndex() -
db.collection.createIndexes() -
createIndexes