返回顶部
首页 > 资讯 > 数据库 >MongoDB中查询(find操作符)详细指南
  • 181
分享到

MongoDB中查询(find操作符)详细指南

mongodb查询findmongodb查询命令mongodbfind 2023-04-21 13:04:36 181人浏览 独家记忆
摘要

1. 概述 在本教程中,我们将着眼于执行搜索操作以在mongoDB中检索文档。MonGoDB 提供了一个find操作符来从集合中查询文档。find运算符的主要目的是根据查询条件从集合中选择文档,并将光标返回到所选文档。

1. 概述

在本教程中,我们将着眼于执行搜索操作以在mongoDB中检索文档。MonGoDB 提供了一个find操作符来从集合中查询文档。find运算符的主要目的是根据查询条件从集合中选择文档,并将光标返回到所选文档。

在本教程中,我们将首先查看 MongoDB shell 查询中的find运算符,然后使用 Java 驱动程序代码。

2. 数据库初始化

在我们继续执行查找操作之前,我们首先需要设置一个数据库baeldung和一个样本收集员工:

db.employee.insertMany([
{
    "employeeId":"EMP1",
    "name":"Sam", 
    "age":23,
    "type":"Full Time",
    "department":"Engineering"
},
{ 
    "employeeId":"EMP2",
    "name":"Tony",
    "age":31,
    "type":"Full Time",
    "department":"Admin"
},
{
    "employeeId":"EMP3",
    "name":"Lisa",
    "age":42,
    "type":"Part Time",
    "department":"Engineering"
}]);

成功插入后,上述查询将返回类似于下图所示的 JSON 结果:

{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("62a88223ff0a77909323a7fa"),
        ObjectId("62a88223ff0a77909323a7fb"),
        ObjectId("62a88223ff0a77909323a7fc")
    ]
}

此时,我们已将一些文档插入到我们的集合中以执行各种类型的查找操作。

3. 使用 MongoDB Shell

要从 MongoDB 集合中查询文档,我们使用 db.collection.find(query, projection) 方法。该方法接受两个可选参数— 查询(query) 和 投影(projection) —作为 MongoDB BSON文档。

查询参数接受带有查询运算符的选择过滤器。要从 MongoDB 集合中检索所有文档,我们可以省略此参数或传递一个空白文档。

接下来,投影参数用于指定要从匹配文档返回的字段。要返回匹配文档中的所有字段,我们可以省略此参数。

此外,让我们从返回所有集合文档的基本查找查询开始:

db.employee.find({});

上面的查询将返回员工集合中的所有文档:

{ "_id" : ObjectId("62a88223ff0a77909323a7fa"), "employeeId" : "1", "name" : "Sam", "age" : 23, "type" : "Full Time", "department" : "Engineering" }{ "_id" : ObjectId("62a88223ff0a77909323a7fb"), "employeeId" : "2", "name" : "Tony", "age" : 31, "type" : "Full Time", "department" : "Admin" }{ "_id" : ObjectId("62a88223ff0a77909323a7fc"), "employeeId" : "3", "name" : "Ray", "age" : 42, "type" : "Part Time", "department" : "Engineering" }

*接下来,让我们编写一个查询来返回属于“Engineering” *部门的所有员工:

db.employee.find({    "department":"Engineering"});

上述查询返回部门等于 “Engineering”的所有员工收款单据:

{ "_id" : ObjectId("62a88223ff0a77909323a7fa"), "employeeId" : "1", "name" : "Sam", "age" : 23, "type" : "Full Time", "department" : "Engineering" }{ "_id" : ObjectId("62a88223ff0a77909323a7fc"), "employeeId" : "3", "name" : "Ray", "age" : 42, "type" : "Part Time", "department" : "Engineering" }

最后,让我们编写一个查询来获取属于“Engineering”部门的所有员工的 姓名 和 年龄:

db.employee.find({    "department":"Engineering"},{    "name":1,    "age":1});

上述查询只返回符合查询条件的文档的名称和年龄字段:

{ "_id" : ObjectId("62a88223ff0a77909323a7fa"), "name" : "Sam", "age" : 23 }{ "_id" : ObjectId("62a88223ff0a77909323a7fc"), "name" : "Ray", "age" : 42 }

请注意,除非明确排除,否则所有文档中默认返回_id字段。

此外,重要的是要注意 find 运算符将光标返回到与查询过滤器匹配的文档。MongoDB Shell 自动迭代光标以显示多达 20 个文档。

此外,MongoDB Shell 提供了一个*findOne()*方法,该方法只返回一个满足上述查询条件的文档。如果多个文档匹配,则将按照磁盘上文档的自然顺序返回第一个文档:

db.employee.findOne();

与*find()*不同,上面的查询将只返回一个文档而不是游标:

{    "_id" : ObjectId("62a99e22a849e1472c440bbf"),    "employeeId" : "EMP1",    "name" : "Sam",    "age" : 23,    "type" : "Full Time",    "department" : "Engineering"}

4. 使用 Java 驱动程序

到目前为止,我们已经了解了如何使用 MongoDB Shell 来执行查找操作。接下来,让我们使用 MongoDB Java 驱动程序实现相同的功能。在开始之前,让我们先创建一个到员工集合的MongoClient连接:

MongoClient mongoClient = new MongoClient("localhost", 27017);MongoDatabase database = mongoClient.getDatabase("baeldung");MongoCollection<Document> collection = database.getCollection("employee");

在这里,我们创建了到运行在默认端口 27017 上的 MongoDB 服务器的连接。接下来,我们从连接创建的*MongoDatabase实例中获取MongoCollection的实例。

首先,要执行*查找操作,我们在MongoCollection的实例上调用 find() 方法。让我们检查代码以从集合中检索所有文档:

FindIterable<Document> documents = collection.find();MongoCursor<Document> cursor = documents.iterator();while (cursor.hasNext()) {    System.out.println(cursor.next());}

请注意,find()方法返回FindIterable<Document>的一个实例。然后我们通过调用 FindIterable 的iterator()方法获得MongoCursor的一个实例。最后,我们遍历光标以检索每个文档。

接下来,让我们添加查询运算符来过滤从查找操作返回的文档:

Bson filter = Filters.eq("department", "Engineering");FindIterable<Document> documents = collection.find(filter);MongoCursor<Document> cursor = documents.iterator();while (cursor.hasNext()) {    System.out.println(cursor.next());}

在这里,我们将Bson过滤器作为参数传递给find()方法。我们可以使用查询运算符的任意组合作为find()方法的过滤器。上面的代码片段将返回department 等于“Engineering”的所有文档。

此外,让我们编写一个片段,它只返回匹配选择条件的文档中的姓名和年龄字段:

Bson filter = Filters.eq("department", "Engineering");Bson projection = Projections.fields(Projections.include("name", "age"));FindIterable<Document> documents = collection.find(filter)  .projection(projection);MongoCursor<Document> cursor = documents.iterator();while (cursor.hasNext()) {    System.out.println(cursor.next());}

在这里,我们调用FindIterable实例的projection()方法。我们将Bson过滤器作为参数传递给*projection()*方法。我们可以使用投影操作在最终结果中包含或排除任何字段。

最后,我们可以使用FindIterable实例上的first()方法检索结果的第一个文档。这将返回单个文档而不是MongoCursor实例:

FindIterable<Document> documents = collection.find();Document document = documents.first();

5. 结论

在本文中,我们学习了使用各种方法在 MongoDB 中执行查找操作。我们执行find以使用查询运算符检索与选择标准匹配的特定文档。此外,我们还学习了执行投影以确定匹配文档中返回的字段。

首先,我们研究了 MongoDB Shell 查询中find*操作的用例,然后讨论了相应的 Java 驱动程序代码。

您可能感兴趣的文档:

--结束END--

本文标题: MongoDB中查询(find操作符)详细指南

本文链接: https://lsjlt.com/news/201794.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MongoDB中查询(find操作符)详细指南
    1. 概述 在本教程中,我们将着眼于执行搜索操作以在MongoDB中检索文档。MongoDB 提供了一个find操作符来从集合中查询文档。find运算符的主要目的是根据查询条件从集合中选择文档,并将光标返回到所选文档。 ...
    99+
    2023-04-21
    mongodb查询find mongodb查询命令 mongodb find
  • 利用Python操作MongoDB数据库的详细指南
    目录前言1 连接数据库1.1 安装PyMongo1.2 连接数据库1.3 连接库与集合2 MongoDB命令在python中的对应方法3 插入数据到MongoDB基本语法被插入的数据格式说明举例4 从MongoDB中查询...
    99+
    2022-06-24
    python操作mongodb数据库 python读取数据库数据 python 操作mongodb
  • MongoDB 查询操作的实例详解
    MongoDB 查询操作的实例详解 使用find或findOne进行查询。并可以进行范围查询、数据集查询、不等式查询,以及其他的一些查询。 查询将会返回DBcursor 游标只有在你需要的时候返回文档 ...
    99+
    2024-04-02
  • 【mongoDB】Java中使用条件操作符进行查询
    查询时经常会用到$in之类的操作符,比如db.collection_0.find("_id":{"$in","0001","0002","0003"})。但是shell归shell,java里应该怎么写,在...
    99+
    2024-04-02
  • MongoDB中类似模糊查询操作
    1.查看集合 show collections2.向集合中添加数据 db.runoob.insertMany([ { 'title':'data1', 'u...
    99+
    2024-04-02
  • MongoDB多表关联查询操作实例详解
    本文实例讲述了MongoDB多表关联查询操作。分享给大家供大家参考,具体如下: Mongoose的多表关联查询 首先,我们回忆一下,MySQL多表关联查询的语句: student表: calss表: 通...
    99+
    2024-04-02
  • LINQ中有哪些查询操作符
    这篇文章给大家介绍LINQ中有哪些查询操作符,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。操作符和LINQLINQ自身功能非常强大,无论使用的是LINQto XML、LINQto DataSets、LINQto Ent...
    99+
    2023-06-17
  • Spring Boot中快速操作Mongodb数据库指南
    前言 在Spring Boot中集成Mongodb非常简单,只需要加入Mongodb的Starter包即可,代码如下: <dependency> <group...
    99+
    2024-04-02
  • Mysql中@和@@符号的详细使用指南
    目录一、概述二、使用语法及实践 用户自定义变量补充:MySQL的@与@@区别总结一、概述 @是用户变量,@@是系统变量。 select @a; 变量名,如果你不加的话,会认...
    99+
    2024-04-02
  • MongoDB中怎么实现数据查询操作
    今天就跟大家聊聊有关MongoDB中怎么实现数据查询操作,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 任何数据库之中,...
    99+
    2024-04-02
  • MongoDB中怎么实现文档查询操作
    今天就跟大家聊聊有关MongoDB中怎么实现文档查询操作,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。基本操作游标这个概念在很多地方都有,Java中JDBC里的ResultSet,A...
    99+
    2023-06-19
  • Python打包成exe文件的详细操作指南
    目录前言一、安装pyinstaller1.1 安装pyinstaller,使用安装命令:1.2 如果遇到需要更新版本请输入:1.3 检查是否正确安装1.4 稍等,水一下;二、pyth...
    99+
    2024-04-02
  • 阿里云ECS增大硬盘的详细操作指南
    阿里云ECS(Elastic ComputeService)是一种弹性计算服务,提供稳定、安全、可靠的云上服务器。但是,有时候用户可能会遇到硬盘空间不足的问题,那么如何增大阿里云ECS的硬盘呢?本文将详细介绍如何进行操作。 登录阿里云控制台...
    99+
    2023-11-15
    阿里 操作指南 硬盘
  • Oracle数据库操作指南:快速创建查询用户
    Oracle数据库操作指南:快速创建查询用户 在Oracle数据库中,为了提高数据库管理的效率和安全性,通常会为不同的用户分配不同的权限和角色。为了在数据库中创建一个具有查询权限的用户...
    99+
    2024-03-02
    查询 oracle 用户
  • PHP中的运算符使用示例详细指南
    目录正文逻辑运算符对布尔值起作用not运算符:2个单数运算符正文 一旦你有了一些变量,你就可以对它们进行运算: $base = 20; $height = 10; $area = $...
    99+
    2022-11-13
    PHP运算符 PHP运算
  • Go 在 MongoDB 中常用查询与修改的操作
    以下所有例子中结构定义如下: type User struct { Id_ bson.ObjectId `bson:"_id"` Name string `b...
    99+
    2022-06-07
    GO MongoDB
  • Go 语言实战指南:删除字符串操作详解
    Go 语言作为一种新兴的程序设计语言,广泛应用于云计算、网络编程等领域。在 Go 语言的字符串操作中,删除字符串是一个常见的需求。本文将深入探讨如何在 Go 语言中进行字符串的删除操作...
    99+
    2024-04-02
  • C++中的操作符重载详细解析
    一、什么是操作符重载操作符重载可以分为两部分:“操作符”和“重载”。说到重载想必都不陌生了吧,这是一种编译时多态,重载实际上可以分为函数重载和操作符重载。运算符重载和函数重载的不同之...
    99+
    2022-11-15
    操作符重载 C++
  • 阿里云服务器多开网页的详细操作指南
    随着互联网的发展,越来越多的企业和个人开始使用阿里云服务器来搭建自己的网站或者应用程序。然而,如何在一台阿里云服务器上多开网页,实现高效利用资源,是很多用户关注的问题。本文将详细介绍如何在阿里云服务器上多开网页,帮助用户更好地使用阿里云服务...
    99+
    2023-11-04
    阿里 操作指南 服务器
  • linux中shell字符串操作的详细介绍
    本篇内容主要讲解“linux中shell字符串操作的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux中shell字符串操作的详细介绍”吧!在做shell批处理程序时候,经常会涉及...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作