複数ドキュメントの検索
コレクション内の複数のドキュメントをクエリするには、 MongoCollection
オブジェクトで find()
メソッドを呼び出します。 find()
メソッドにクエリフィルターを渡すと、コレクション内のフィルターに一致するドキュメントを検索して返します。 フィルターを含めない場合、MongoDB はコレクション内のすべてのドキュメントを返します。
Java ドライバーを使用して MongoDB をクエリする方法について詳しくは、 ドキュメントのクエリ に関するガイドをご覧ください。
また、一致したドキュメントを指定された順序で整理するsort()
や、返されたドキュメントに含まれるフィールドを構成するprojection()
など、 find()
メソッドにメソッドを連結することもできます。
sort()
メソッドの詳細については、 ソート に関するガイドをご覧ください。 projection()
メソッドの詳細については、 プロジェクション に関するガイドをご覧ください
find()
メソッドは、結果にアクセスし、整理し、走査するためのいくつかのメソッドを提供するクラスであるFindIterable
のインスタンスを返します。 FindIterable
は、コア Java インターフェースIterable
を実装する親クラスであるMongoIterable
からメソッドも継承します。
結果を走査するために使用できるMongoCursor
インスタンスを返すMongoIterable
でiterator()
メソッドを呼び出すことができます。 MongoCursor
hasNext()
などのメソッドを呼び出して追加の結果が存在するかどうかを確認したり、next()
ではコレクション内の次のドキュメントを返すことができます。クエリに一致するドキュメントがない場合、hasNext()
false
を呼び出すと が返されるため、next()
を呼び出すと例外がスローされます。
最終結果が返された後、または結果が存在しない場合に イテレータでnext()
を呼び出すと、 java.util.NoSuchElementException
型の例外がスローされます。 next()
を呼び出す前に、必ずhasNext()
を使用して追加の結果が存在することを確認してください。
例
次のスニペットは、 movies
コレクションのクエリに一致するすべてのドキュメントを検索して出力します。 次のオブジェクトとメソッドを使用します。
find()
メソッドに渡されるクエリフィルター。lt()
フィルターは、長さが 15 分未満の映画のみに一致します。返されたドキュメントをタイトルの降順で整理するソート(「A」の前に「Z」)。
title
フィールドとimdb
フィールドに オブジェクトを含み、ヘルパー メソッドexcludeId()
を使用して_id
フィールドを除外するプロジェクション。
注意
この例では、接続 URI を使用して MongoDB のインスタンスに接続します。 MongoDB インスタンスへの接続の詳細については、接続ガイド を参照してください。
// Retrieves documents that match a query filter by using the Java driver package usage.examples; import static com.mongodb.client.model.Filters.lt; 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.MongoCursor; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Projections; import com.mongodb.client.model.Sorts; public class Find { 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"); // Creates instructions to project two document fields Bson projectionFields = Projections.fields( Projections.include("title", "imdb"), Projections.excludeId()); // Retrieves documents that match the filter, applying a projection and a descending sort to the results MongoCursor<Document> cursor = collection.find(lt("runtime", 15)) .projection(projectionFields) .sort(Sorts.descending("title")).iterator(); // Prints the results of the find operation as JSON try { while(cursor.hasNext()) { System.out.println(cursor.next().toJson()); } } finally { cursor.close(); } } } }
このページで言及されているクラスとメソッドについて詳しくは、次の API ドキュメントを参照してください。