MongoDBコレクションにインデックスを作成する方法
MongoDBコレクションにインデックスを作成する方法
MongoDBでインデックスを作成するには、createIndex()メソッドを使用します。インデックスを適切に設定することで、クエリの検索速度を大幅に向上させることができます。
まず、ドキュメントを含むコレクションに対してインデックスを作成してみましょう。以下の例では、details.idフィールドに対して昇順(1)のインデックスを作成しています。
> db.demo702.createIndex({"details.id":1});
{
"createdCollectionAutomatically" : true,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}この出力に含まれる各フィールドの意味は以下のとおりです。
- createdCollectionAutomatically:コレクションが存在しなかった場合に自動的に作成されたことを示します
- numIndexesBefore:インデックス作成前のインデックス数(デフォルトの_idインデックスを含む)
- numIndexesAfter:インデックス作成後のインデックス数
- ok:コマンドが正常に実行されたことを示します(1は成功)
次に、ネストされたドキュメントを含むデータをコレクションに挿入します。
> db.demo702.insertOne({
... "details" : [
... {
... id:101,
... studentInfo:{
... "StudentName" : "Chris",
... "StudentAge" : 23,
... }
... },
... {
...
... id: 102,
... studentInfo:{
... "StudentName" : "Robert",
... "StudentAge" : 20,
... }
... }
... ]
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea6ea3b551299a9f98c93b3")
}挿入されたドキュメントを確認するには、find()メソッドを使用します。pretty()を組み合わせることで、整形された読みやすい形式で表示できます。
> db.demo702.find().pretty();
このコマンドを実行すると、以下のような出力が得られます。
{
"_id" : ObjectId("5ea6ea3b551299a9f98c93b3"),
"details" : [
{
"id" : 101,
"studentInfo" : {
"StudentName" : "Chris",
"StudentAge" : 23
}
},
{
"id" : 102,
"studentInfo" : {
"StudentName" : "Robert",
"StudentAge" : 20
}
}
]
}このように、配列内のネストされたフィールド(この例ではdetails.id)に対してもインデックスを作成できます。配列フィールドにインデックスを作成すると、MongoDBは自動的に「マルチキーインデックス」を適用し、配列内の特定の要素を検索するクエリのパフォーマンスを向上させます。
-
JavaでMongoDBコレクションを作成する方法を徹底解説
MongoDBでコレクションを作成する基本 MongoDBでは、db.createCollection()メソッドを使用することで、新しいコレクションを作成できます。 構文 db.createCollection(name, options) 各要素の意味は以下の通りです。 db:操作対象のデータベースを表します。 name:作成するコレクションの名前です。 options:省略可能なパラメータのセットです。capped(上限付きコレクション)、autoIndexId(自動インデックス作成)、size(コレクションの最大サイズ)、max(格納できるドキュメントの最大数)などを指定できます。
-
JavaでMongoDBにインデックスを作成する方法をわかりやすく解説
MongoDBでインデックスを作成するには、createIndex() メソッドを使用します。この記事では、MongoDBシェルでの基本的な構文と、Javaドライバーを使ったインデックス作成の手順をサンプルコード付きで解説します。 MongoDBシェルでの基本構文 MongoDBシェル(mongosh)でインデックスを作成する場合、以下の構文を使用します。 db.COLLECTION_NAME.createIndex({KEY: 1}) KEY にはインデックスを作成したいフィールド名を指定し、1 は昇順(ascending)を意味します。降順(descending)のインデックスを作成したい