Java教程

MongoDB Java 驱动程序 v4.3 查找文档

本文主要是介绍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'
  • 一种按评级降序组织匹配文档的排序,因此如果我们的查询匹配多个文档,则返回的文档是具有最高评级的文档。
  • 包含和 字段中的对象并使用辅助方法排除该字段 的投影。titleimdb_idexcludeId()
笔记

此示例使用连接字符串连接到 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”)的标题降序排列返回的文档。
  • 包含和 字段中的对象并使用辅助方法排除该字段 的投影。titleimdb_idexcludeId()
笔记

此示例使用连接字符串连接到 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 查找文档的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!