MongoDB Java 驱动程序 v4.3 查找文档
2021/10/1 19:40:52
本文主要是介绍MongoDB Java 驱动程序 v4.3 查找文档,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
官网地址: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 分钟的电影。 - 一个排序,组织中(“A”前“Z”)的标题降序排列返回的文档。
- 包含和 字段中的对象并使用辅助方法排除该字段 的投影。
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, 请参阅我们的常见问题解答页面 以了解您需要对此代码示例进行哪些更改。
这篇关于MongoDB Java 驱动程序 v4.3 查找文档的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-12百万架构师第十五课:源码分析:Spring 源码分析:SpringMVC核心原理及源码分析|JavaGuide
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide