Docs 菜单
Docs 主页
/ / /
Java (Sync) 驱动程序
/ /

查找文档

您可以通过将 MongoCollection 对象上的 find()first() 方法链接在一起来检索集合中的单个文档。您可以将查询筛选器传递给 find() 方法进行查询并返回集合中与筛选器匹配的文档。如果不包含筛选器,MongoDB 将返回集合中的所有文档。first() 方法会返回第一个匹配的文档。

有关使用 Java 驱动程序查询 MongoDB 的更多信息,请参阅我们的 查询文档指南。

您还可以将其他方法链式调用至 find() 方法,例如以指定顺序组织匹配文档的 sort(),以及配置返回文档中包含的字段的 projection()

有关sort()方法的更多信息,请参阅我们的排序指南。 有关projection()方法的更多信息,请参阅我们的投影指南

find() 方法返回 FindIterable 类的一个实例,这个类提供多种访问、组织和遍历结果的方法。FindIterable 还继承父类 MongoIterable 的方法,如 first()

first() 方法返回检索结果中的第一份文档,如果没有结果,则返回 null

以下代码片段从 movies 集合中查找单个文档。它使用以下对象和方法:

  • 传递给 find() 方法的查询筛选器eq 筛选器仅会匹配标题与 'The Room' 文本完全匹配的电影。

  • 排序,按评分以降序组织匹配的文档;因此,如果查询匹配多个文档,则返回的文档将是评分最高的文档。

  • 使用辅助方法 excludeId() 包含 titleimdb 字段中的对象并排除 _id 字段的投影

注意

该示例使用连接 URI 连接到 MongoDB 实例。如需了解有关连接到 MongoDB 实例的更多信息,请参阅连接指南

// Retrieves a document that matches a query filter by using the Java driver
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");
// Creates instructions to project two document fields
Bson projectionFields = Projections.fields(
Projections.include("title", "imdb"),
Projections.excludeId());
// Retrieves the first matching document, applying a projection and a descending sort to the results
Document doc = collection.find(eq("title", "The Room"))
.projection(projectionFields)
.sort(Sorts.descending("imdb.rating"))
.first();
// Prints a message if there are no result documents, or prints the result document as JSON
if (doc == null) {
System.out.println("No results found.");
} else {
System.out.println(doc.toJson());
}
}
}
}

提示

Legacy API

如果您使用的是传统 API,请参阅我们的常见问题页面,了解需要对该代码示例进行哪些更改。

有关此页面上提及的类和方法的更多信息,请参阅以下 API 文档:

  • FindIterable

  • MongoIterable

  • find()

  • first()

后退

find