官网地址:https://docs.mongodb.com/drivers/java/sync/current/usage-examples/findOne/
您可以通过将对象上的 find()
和 first()
方法链接在一起来检索集合中的单个文档 MongoCollection
。您可以将查询过滤器传递给find()
方法以查询并返回与集合中的过滤器匹配的文档。如果不包含过滤器,MongoDB 将返回集合中的所有文档。该 first()
方法返回第一个匹配的文档。
有关使用 Java 驱动程序查询 MongoDB 的更多信息,请参阅我们的 查询文档指南。
您还可以将其他方法链接到该find()
方法,例如按sort()
指定顺序组织匹配的文档,以及 projection()
配置返回文档中包含的字段。
有关该sort()
方法的更多信息,请参阅我们的 Sorting 指南。有关该projection()
方法的更多信息,请参阅我们的 投影指南
该find()
方法返回 的实例FindIterable
,该类提供多种方法来访问、组织和遍历结果。 FindIterable
还从其父类继承方法, MongoIterable
例如first()
.
该first()
方法返回检索结果中的第一个文档,或者null
如果没有结果。
以下代码段从movies
集合中查找单个文档。它使用以下对象和方法:
find()
方法。该eq
过滤器只匹配电影的标题文本完全匹配 'The Room'
。title
imdb
_id
excludeId()
此示例使用连接字符串连接到 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()); } } } }
您可以通过调用对象find()
上的方法来查询集合中的多个文档MongoCollection
。将查询过滤器传递给 find()
方法以查询并返回与集合中的过滤器匹配的文档。如果不包含过滤器,MongoDB 将返回集合中的所有文档。
有关使用 Java 驱动程序查询 MongoDB 的更多信息,请参阅我们的 查询文档指南。
您还可以将find()
方法链接到方法,例如按sort()
指定顺序组织匹配的文档以及 projection()
配置返回文档中包含的字段。
有关该sort()
方法的更多信息,请参阅我们的 Sorting 指南。有关该projection()
方法的更多信息,请参阅我们的 投影指南
该find()
方法返回 的实例FindIterable
,该类提供多种方法来访问、组织和遍历结果。 FindIterable
还从其父类继承方法,该类 MongoIterable
实现了核心 Java 接口Iterable
。
您可以调用 上的iterator()
方法,该方法MongoIterable
返回MongoCursor
可用于遍历结果的实例。您可以调用MongoCursor
诸如此类的方法hasNext()
来检查是否存在其他结果,或next()
返回集合中的下一个文档。如果没有文档与查询匹配,则调用hasNext()
返回false
并因此调用next()
引发异常。
如果next()
在迭代器返回最终结果之后或在没有结果存在时调用迭代器,它会抛出类型为 的异常 java.util.NoSuchElementException
。始终用于hasNext()
在调用之前检查是否存在其他结果next()
。
以下代码段查找并打印与movies
集合中的查询匹配的所有文档。它使用以下对象和方法:
find()
方法。该lt()
过滤器仅匹配运行时间少于 15 分钟的电影。title
imdb
_id
excludeId()
此示例使用连接字符串连接到 MongoDB 实例。要了解有关连接到 MongoDB 实例的更多信息,请参阅 连接指南。
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"); Bson projectionFields = Projections.fields( Projections.include("title", "imdb"), Projections.excludeId()); MongoCursor<Document> cursor = collection.find(lt("runtime", 15)) .projection(projectionFields) .sort(Sorts.descending("title")).iterator(); try { while(cursor.hasNext()) { System.out.println(cursor.next().toJson()); } } finally { cursor.close(); } } } }
提示 传统 API
如果您使用的是旧 API, 请参阅我们的常见问题解答页面 以了解您需要对此代码示例进行哪些更改。