Docs Menu
Docs Home
/ / /
Java Sync Driver
/ /

複数ドキュメントの検索

コレクション内の複数のドキュメントをクエリするには、 MongoCollectionオブジェクトで find()メソッドを呼び出します。 find()メソッドにクエリフィルターを渡すと、コレクション内のフィルターに一致するドキュメントを検索して返します。 フィルターを含めない場合、MongoDB はコレクション内のすべてのドキュメントを返します。

Java ドライバーを使用して MongoDB をクエリする方法について詳しくは、 ドキュメントのクエリ に関するガイドをご覧ください。

また、一致したドキュメントを指定された順序で整理するsort()や、返されたドキュメントに含まれるフィールドを構成するprojection()など、 find()メソッドにメソッドを連結することもできます。

sort()メソッドの詳細については、 ソート に関するガイドをご覧ください。 projection()メソッドの詳細については、 プロジェクション に関するガイドをご覧ください

find()メソッドは、結果にアクセスし、整理し、走査するためのいくつかのメソッドを提供するクラスであるFindIterableのインスタンスを返します。 FindIterableは、コア Java インターフェースIterableを実装する親クラスであるMongoIterableからメソッドも継承します。

結果を走査するために使用できるMongoCursorインスタンスを返すMongoIterableiterator()メソッドを呼び出すことができます。 MongoCursorhasNext()などのメソッドを呼び出して追加の結果が存在するかどうかを確認したり、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();
}
}
}
}

Tip

Legacy API

レガシー API を使用している場合は、 FAQ ページ を参照して、このコード例に加える必要がある変更を確認してください。

このページで言及されているクラスとメソッドについて詳しくは、次の API ドキュメントを参照してください。

  • FindIterable

  • MongoIterable

  • MongoCursor

  • find()

戻る

ドキュメントの検索