Javaを使ってMongoDBコレクションからすべてのドキュメントを取得する方法
MongoDBでは、find()メソッドを使用することで、既存のコレクションからドキュメントを取得できます。この記事では、MongoDBシェルでの基本操作と、Javaプログラムからすべてのドキュメントを取得する手順について詳しく解説します。
MongoDBシェルでの構文
db.coll.find()
各要素の意味は以下のとおりです。
- db:対象となるデータベース
- coll:ドキュメントを取得したいコレクションの名前
シェルでの実行例
ここでは、MongoDBデータベース内に「students」というコレクションがあり、次のドキュメントが登録されているものとします。
{name:"Ram", age:26, city:"Mumbai"}
{name:"Roja", age:28, city:"Hyderabad"}
{name:"Ramani", age:35, city:"Delhi"}次のクエリを実行すると、コレクション内のすべてのドキュメントが取得されます。
> use myDatabase()
switched to db myDatabase()
> db.createCollection(sample)
{ "ok" : 1 }
> db.sample.find()
{ "_id" : ObjectId("5e870492af638d501865015f"), "name" : "Ram", "age" : 26, "city"
: "Mumbai" }
{ "_id" : ObjectId("5e870492af638d5018650160"), "name" : "Roja", "age" : 28,
"city" : "Hyderabad" }
{ "_id" : ObjectId("5e870492af638d5018650161"), "name" : "Ramani", "age" : 35,
"city" : "Delhi" }
>Javaプログラムで取得する方法
Javaから現在のコレクション内のすべてのドキュメントを取得するには、com.mongodb.client.MongoCollectionインターフェースのfind()メソッドを使用します。このメソッドは、すべてのドキュメントを含む反復可能なオブジェクト(FindIterable)を返します。
事前準備
JavaプログラムからMongoDBに接続する前に、以下の準備を行ってください。
- システムにMongoDBがインストールされていることを確認する
- Javaプロジェクトのpom.xmlファイルに、以下の依存関係を追加する
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.2</version>
</dependency>取得までの手順
- MongoClientクラスをインスタンス化して、MongoDBクライアントを作成する
- getDatabase()メソッドを使用して、データベースに接続する
- getCollection()メソッドを使用して、ドキュメントを取得したいコレクションのオブジェクトを取得する
- find()メソッドを呼び出し、コレクション内のすべてのドキュメントを含む反復可能なオブジェクトを取得する
サンプルコード
以下は、studentsコレクションからすべてのドキュメントを取得して表示する完全なサンプルプログラムです。
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import java.util.Iterator;
import org.bson.Document;
import com.mongodb.MongoClient;
public class RetrievingAllDocuments {
public static void main( String args[] ) {
// MongoDBクライアントの作成
MongoClient mongo = new MongoClient( "localhost" , 27017 );
// データベースへの接続
MongoDatabase database = mongo.getDatabase("myDatabase");
// コレクションオブジェクトの作成
MongoCollection<Document> collection = database.getCollection("students");
// ドキュメントの取得
FindIterable<Document> iterDoc = collection.find();
Iterator it = iterDoc.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}実行結果
上記プログラムを実行すると、コンソールに以下のように各ドキュメントが出力されます。
Document{{_id=5e86db7012e9ad337c3aaef5, name=Ram, age=26, city=Hyderabad}}
Document{{_id=5e86db7012e9ad337c3aaef6, name=Robert, age=27, city=Vishakhapatnam}}
Document{{_id=5e86db7012e9ad337c3aaef7, name=Rahim, age=30, city=Delhi}}まとめ
MongoDBシェルでもJavaプログラムでも、find()メソッドを使えばコレクション内のすべてのドキュメントを簡単に取得できます。Javaの場合は、MongoClientで接続し、getDatabase()とgetCollection()で対象を指定したうえで、find()が返すFindIterableをイテレータで処理するのが基本的な流れです。条件を付けた検索が必要になった場合は、find()にフィルタを渡すことで絞り込みも可能です。
-
JavaでMongoDBからデータを取得する際にドキュメントをスキップする方法
MongoDBコレクションからレコードを取得する際、skip()メソッドを使うと、検索結果の先頭から指定した件数のドキュメントを読み飛ばすことができます。Webアプリケーションのページネーション(ページ送り)機能などを実装する際に非常に便利なメソッドです。基本構文db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)JavaのMongoDBライブラリにも同名のskip()メソッドが用意されています。find()メソッドの実行結果に対してこのメソッドを呼び出し、引数として「スキップしたいレコード数」を表す整数値を渡すだけで、簡単にドキュメントをス
-
JavaでMongoDBデータベース内のすべてのコレクションを一覧表示する方法
MongoDBでは、show collections コマンドを使うことで、データベースに存在するすべてのコレクションの一覧を表示できます。 例 たとえば、MongoDBデータベースに以下のように3つのコレクションを作成したとします。 > use sampleDatabase switched to db sampleDatabase > db.createCollection(students) { ok : 1 } > db.createCollection(teachers) { ok : 1 } > db.createCollection(sample) { o