JavaでMongoDBにインデックスを作成する方法をわかりやすく解説
MongoDBでインデックスを作成するには、createIndex() メソッドを使用します。この記事では、MongoDBシェルでの基本的な構文と、Javaドライバーを使ったインデックス作成の手順をサンプルコード付きで解説します。
MongoDBシェルでの基本構文
MongoDBシェル(mongosh)でインデックスを作成する場合、以下の構文を使用します。
db.COLLECTION_NAME.createIndex({KEY: 1})
KEY にはインデックスを作成したいフィールド名を指定し、1 は昇順(ascending)を意味します。降順(descending)のインデックスを作成したい場合は -1 を指定します。
例えば、age フィールドに対して昇順のインデックスを作成する場合は次のようになります。
db.sampleCollection.createIndex({age: 1})
Javaでインデックスを作成する方法
Javaからインデックスを作成する場合も、同様に createIndex() メソッドを使用します。このメソッドには、作成するインデックスの種類(昇順・降順)と、対象となるフィールド名を指定します。
フィールド名とソート順の指定には、com.mongodb.client.model.Indexes クラスのヘルパーメソッドが便利です。
Indexes.ascending("フィールド名")… 昇順インデックスIndexes.descending("フィールド名")… 降順インデックス
例えば、name フィールドに降順インデックスを作成する場合は以下のように記述します。
coll.createIndex(Indexes.descending("name"));
サンプルコード
以下は、コレクションを作成し、age フィールドに昇順インデックスを作成して、その結果を確認する完全なサンプルプログラムです。
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Indexes;
import org.bson.Document;
import com.mongodb.MongoClient;
public class CreatingIndex {
public static void main(String args[]) {
// MongoDBクライアントの生成
MongoClient mongo = new MongoClient("localhost", 27017);
// データベースへの接続
MongoDatabase database = mongo.getDatabase("myDatabase");
// コレクションの作成
database.createCollection("sampleCollection");
// インデックスを作成するコレクションの取得
MongoCollection<Document> coll = database.getCollection("sampleCollection");
// インデックスの作成(ageフィールド・昇順)
coll.createIndex(Indexes.ascending("age"));
System.out.println("インデックスが正常に作成されました");
// コレクション内のインデックス一覧を表示
for (Document index : coll.listIndexes()) {
System.out.println(index.toJson());
}
}
}
実行結果
上記のプログラムを実行すると、コンソールに次のような出力が表示されます。
インデックスが正常に作成されました
{"v": 2, "key": {"_id": 1}, "name": "_id_", "ns": "myDatabase.sampleCollection"}
{"v": 2, "key": {"age": 1}, "name": "age_1", "ns": "myDatabase.sampleCollection"}
出力を見ると、すべてのコレクションに自動的に作成される _id のインデックスに加えて、新しく作成した age_1 インデックスが登録されていることが確認できます。
補足ポイント
- 複合インデックス:
Indexes.compoundIndex(Indexes.ascending("a"), Indexes.descending("b"))のように記述すると、複数フィールドを組み合わせた複合インデックスも作成できます。 - ドライバーバージョンについて: 新しいMongoDB Javaドライバー(4.x以降)では、クライアントの生成方法が
MongoClients.create()に変わっています。古いMongoClientクラスは非推奨のため、環境に合わせて適宜読み替えてください。 - インデックスの効果: インデックスを適切に設定することで検索クエリが高速化されますが、書き込み性能には若干のオーバーヘッドが発生するため、頻繁に検索条件として使うフィールドに絞って作成するのがおすすめです。
-
JavaでJSON配列を作成する方法をわかりやすく解説
JSON配列とは、角括弧で囲まれた値の順序付きコレクションのことです。具体的には「[」で始まり「]」で終わり、配列内の各値はカンマ(,)で区切られます。JSON配列のサンプル{ books: [Java, JavaFX, Hbase, Cassandra, WebGL, JOGL] }json-simpleは、JSONオブジェクトを処理するための軽量ライブラリです。このライブラリを使えば、JavaプログラムからJSONドキュメントの内容を読み取ったり、書き込んだりすることができます。json-simpleのMaven依存関係json-simpleライブラリを使用するには、まずpom.x
-
JavaでJSONファイルを作成する方法をわかりやすく解説
JSON(JavaScript Object Notation)は、人間が読みやすい形式でデータを交換するために設計された、軽量なテキストベースのオープン標準フォーマットです。JSONの記法は、C、C++、Java、Python、Perlなど、多くのプログラミング言語に精通したプログラマーにとって馴染み深いものとなっています。 JSONドキュメントのサンプル 以下は、書籍情報を格納した典型的なJSONドキュメントの例です。 { book: [ { id: 01, language: Java, ed