ドキュメントの検索
MongoCollection
オブジェクトの find()
メソッドと first()
メソッドを連結することで、コレクション内の 1 つのドキュメントを検索できます。find()
メソッドにクエリフィルターを渡すと、コレクション内のフィルターに一致するドキュメントを検索して返すことができます。フィルターを含めない場合、MongoDB はコレクション内のすべてのドキュメントを返します。first()
メソッドは最初に一致しているドキュメントを返します。
Java ドライバーを使用して MongoDB をクエリする方法の詳細については、ドキュメントのクエリに関するガイドをご覧ください。
また、一致したドキュメントを指定された順序で整理する sort()
や、返されたドキュメントに含まれるフィールドを構成する projection()
など、他のメソッドを find()
メソッドに連結することもできます。
sort()
メソッドの詳細については、 ソート に関するガイドをご覧ください。 projection()
メソッドの詳細については、 プロジェクション に関するガイドをご覧ください
find()
メソッドは、結果にアクセスし、整理し、走査するためのいくつかのメソッドを提供するクラスである、FindIterable
のインスタンスを返します。FindIterable
は、first()
などの親クラスである、MongoIterable
からメソッドも継承します。
first()
メソッドは、検索された結果から最初のドキュメントを返します。結果がない場合は null
を返します。
例
次のスニペットは、movies
コレクションから 1 つのドキュメントを検索します。次のオブジェクトとメソッドを使用します。
find()
メソッドに渡されるクエリフィルター。eq
フィルターは、タイトルが'The Room'
テキストと完全に一致する映画のみに一致します。一致したドキュメントを評価の降順で整理するソート。これにより、クエリが複数のドキュメントに一致した場合、返されるドキュメントが最も評価の高いドキュメントになります。
title
フィールドとimdb
フィールドに オブジェクトを含み、ヘルパー メソッドexcludeId()
を使用して_id
フィールドを除外するプロジェクション。
注意
この例では、接続 URI を使用して MongoDB のインスタンスに接続します。 MongoDB インスタンスへの接続の詳細については、接続ガイド を参照してください。
package usage.examples; import static com.mongodb.client.model.Filters.eq; import org.bson.Document; import org.bson.conversions.Bson; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Projections; import com.mongodb.client.model.Sorts; public class FindOne { public static void main( String[] args ) { // Replace the uri string with your MongoDB deployment's connection string String uri = "<connection string uri>"; try (MongoClient mongoClient = MongoClients.create(uri)) { MongoDatabase database = mongoClient.getDatabase("sample_mflix"); MongoCollection<Document> collection = database.getCollection("movies"); Bson projectionFields = Projections.fields( Projections.include("title", "imdb"), Projections.excludeId()); Document doc = collection.find(eq("title", "The Room")) .projection(projectionFields) .sort(Sorts.descending("imdb.rating")) .first(); if (doc == null) { System.out.println("No results found."); } else { System.out.println(doc.toJson()); } } } }
このページで言及されているクラスとメソッドについて詳しくは、次の API ドキュメントを参照してください。