查找文档
您可以通过将 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()
包含title
和imdb
字段中的对象并排除_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()); } } } }
有关此页面上提及的类和方法的更多信息,请参阅以下 API 文档: