Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaでMongoDBコレクションからデータを取得する際にレコード数を制限する方法

MongoDBのコレクションからレコードを取得する際、limit()メソッドを使用することで、結果として返されるレコードの件数を制限できます。大量のデータが格納されたコレクションから必要な分だけ効率よく取り出したい場合に非常に便利な機能です。

limit()メソッドの基本構文

db.COLLECTION_NAME.find().limit(取得したいレコード数)

シェル上では上記のように記述します。JavaのMongoDBドライバ(ライブラリ)にも同名のlimit()メソッドが用意されており、find()メソッドの実行結果に対して、必要なレコード数を表す整数値を引数として渡して呼び出すことで、取得件数を制限できます。

Javaでの実装例

以下は、studentsコレクションに5件のドキュメントを挿入し、そのうち先頭の3件だけを取得して表示するサンプルプログラムです。

import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.bson.Document;
import com.mongodb.MongoClient;

public class LimitingRecords {
    public static void main(String args[]) {
        // MongoDBクライアントの作成
        MongoClient mongo = new MongoClient("localhost", 27017);

        // データベースへの接続
        MongoDatabase database = mongo.getDatabase("myDatabase");

        // コレクションオブジェクトの取得
        MongoCollection<Document> collection = database.getCollection("students");

        // 挿入用ドキュメントの作成
        Document document1 = new Document("name", "Ram").append("age", 26).append("city", "Hyderabad");
        Document document2 = new Document("name", "Robert").append("age", 27).append("city", "Vishakhapatnam");
        Document document3 = new Document("name", "Rhim").append("age", 30).append("city", "Delhi");
        Document document4 = new Document("name", "Radha").append("age", 28).append("city", "Mumbai");
        Document document5 = new Document("name", "Ramani").append("age", 45).append("city", "Pune");

        // ドキュメントの一括挿入
        List<Document> list = new ArrayList<Document>();
        list.add(document1);
        list.add(document2);
        list.add(document3);
        list.add(document4);
        list.add(document5);
        collection.insertMany(list);
        System.out.println("Documents Inserted");

        // コレクションオブジェクトの再取得
        collection = database.getCollection("students");

        // limit()を使って3件だけ取得
        FindIterable<Document> iterDoc = collection.find().limit(3);
        Iterator it = iterDoc.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

実行結果

Documents Inserted
Document{{_id=5e887b16dac53c7f07cfd740, name=Ram, age=26, city=Hyderabad}}
Document{{_id=5e887b16dac53c7f07cfd741, name=Robert, age=27, city=Vishakhapatnam}}
Document{{_id=5e887b16dac53c7f07cfd742, name=Rhim, age=30, city=Delhi}}

このように、コレクションには5件のドキュメントが挿入されていますが、limit(3)を指定したことで、出力されるのは最初の3件のみとなっています。

補足:skip()との組み合わせによるページネーション

limit()skip()メソッドと組み合わせることで、ページング処理(ページネーション)にも活用できます。例えば、1ページあたり10件表示する場合、2ページ目はcollection.find().skip(10).limit(10)のように記述することで、11件目から20件目までのデータを取得できます。

  1. JavaでCSVファイルを読み込む方法|BufferedReaderによる基本的なデータ読み取り手順

    CSVとは「Comma Separated Values(カンマ区切り値)」の略で、テキスト形式のデータファイルの一種です。CSVファイルでは、1行ごとに複数の項目がカンマ(,)で区切られて記録されており、拡張子は「.csv」として保存されます。表形式のデータを扱う際に広く利用されている、シンプルで汎用性の高いフォーマットです。 JavaでCSVファイルを読み込む仕組み JavaでCSVファイルを読み込むには、BufferedReaderクラスのreadLine()メソッドを使用するのが基本的な方法です。このメソッドを使うと、ファイルの内容を1行ずつ順番に読み取ることができます。 読み取った各

  2. Javaでプロパティファイルからデータを読み取る方法を解説

    JavaのPropertiesクラスは、Hashtableクラスのサブクラスであり、永続化可能なプロパティの集合(プロパティセット)を表します。Propertiesオブジェクトはストリームへ保存したり、ストリームから読み込んだりすることができます。また、プロパティリスト内の各キーとそれに対応する値は、どちらも文字列型として扱われます。Javaでは、Propertiesファイルを使うことでアプリケーションの設定情報を外部化し、キーと値(key-value)のペアとして管理できます。Propertiesクラスが提供するload()メソッドを使用すると、.propertiesファイルに記述されたキー