Docs Menu
Docs Home
/ / /
Java 同期
/ /

ドキュメントの検索

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());
}
}
}
}

Tip

Legacy API

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

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

戻る

検索操作