MongoDB文档-基础使用-在客户端(dos窗口)/可视化工具中使用MongoDB基础语句

阿丹:

        本文章将描述以及研究mongodb在客户端的基础应用以及在spring-boot中整合使用mongodb来完成基本的数据增删改查。

先放官方的文章

MongoDB CRUD操作 - MongoDB-CN-Manual

本文章分为:

        在客户端(dos窗口)/可视化工具中使用MongoDB语句

       在spring-boot中整合mongodb并完成数据的增删改查

在窗口中以及可视化工具使用mongodb语句进行操作

MongoDB如何创建数据库和集合 | MongoDB中文社区

MongoDB CRUD操作 - MongoDB-CN-Manual

 新建一个查询来演示效果:

 mongodb如何创建数据库和集合

        数据库学习的第一步一定是创建数据库和集合。数据库用于存储所有集合,而集合用来存储所有文档。这些文档将一次包含相关的“字段名”和“字段”的值。

同时我们要知道一个事情就是文档中也是可以存在文档的。类比与java中的实体类就方便理解很多。一个类中的属性也可以是其他的实体类。 

下面是一个文档是示例: 

{“Employeeid”:1,“EmployeeName”:“Smith”
}
冒号前面是field names
后面就是 field values

使用Use命令创建数据库

        使用use命令来创建一个新的数据库:

use ExampleDB

这个代码中的ExampleDB就是新建的数据库文件。

这段mongodb的use代码可以类比为mysql中的:

IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'ExampleDB') CREATE DATABASE ExampleDB;

这个示例的sql在mysql中执行的时候是一个效果。 

代码解释:

        1、使用 use 命令来创建mongodb中的数据库,如果数据库不存在,将创建一个新的数据库。

        2、同样如果数据库存在则使用这个数据库。

可以看到执行成功。在use语句执行成功之后mongodb将自动切换到创建的数据库。

使用insert()创建集合/表

创建集合的最简单方法是一条记录(不过是使用字段名称和值组成的文档)插入到集合中。如果该集合不存在,则会创建一个新的集合。

use ExampleDBdb.ExampleDB.insert
({"员工编号":1,"员工姓名":"阿丹"})

 解释一下语法:

        db:是一个对象,代表一个数据库的连接。在使用这个语言之前,需要建立数据库的连接。以便在代码中访问数据库。

       ExampleDB:进行操作的集合名称,如果没有这个集合就会新建这个集合。

  {"员工编号":1,"员工姓名":"阿丹"}

上面就是一个文档

        “员工编号”:就是一个field names

        “员工编号的值”:就是value

 注意:

        如果在mongodb中没有这个库的数据使用这样的插入语句就会新建一个这样的库

        使用上述语句来进行插入的时候是不完善的。因为这会导致我们的这个新增的文档添加到一个与库的名字一样的集合中去。一定要注意。

 使用insert()在mongodb中插入数组

尝试使用数组的形式一次性的多次传入多个文档。

完成步骤思想:

        1、创建一个名字叫Example数组javascript变量来保存文档数组

        2、将具有字段名称的值和所需要的文档添加到变量中

        3、使用insert命令将文档数组插入到集合中

#定义数组
var Example = [{"员工编号":2,"员工姓名":"帅丹"},{"员工编号":3,"员工姓名":"大力丹"},{"员工编号":4,"员工姓名":"快乐丹"}
]
#将定义的数据添加到ExampleDB集合中
db.ExampleDB.insert(Example)

这就是在MongoDB中完成了批量添加。
 现在可以看到已经成功的加入了三条数据。也就是三个文档。

 使用查询语句,并规定使用JSON格式打印

        在以前使用的文档形式存储的格式中最常使用的就是json的形式。更是因为如果我们拿到了json形式的字符串的话。我们可以很轻松的将这个json字符串转换成我们的实体类。

        json格式的全称为JavaScript Ojbect Notation的格式(对我们敲java的人很友好),是一种规律的存储信息,并且便于阅读的格式。

        那么下面我们就使用语句来完成打印json的示例:

db.查询使用的集合.find().forEach(printjson)

执行尝试一下:

 

 代码方法以及参数解释:

  • db.ExampleDB.find(): 这个语句使用find()方法来查询ExampleDB数据库中的所有文档。find()方法返回一个游标(cursor)对象,该对象包含了所有符合查询条件的文档。
  • forEach: 这个方法用于遍历游标中的每个文档,并对每个文档执行指定的操作。
  • printjson: 这个函数用于将文档以JSON格式打印到控制台上

其中的find()如果括号中什么都不写的话就默认是查找所有的。

如何去设置主键ID呢?

通过解析刚才MongoDB给我们的返回值中我们可以看到本来在业务逻辑中员工编号是成为使用主键id。但是发现mongodb自己生成了一个不规则的字符串字段。“_id”。现在我们需要将这个“_id”给设置成我们的主键id.

在MongoDB中,_id字段是集合的主键,以便可以在集合中唯一地标识每个文档。_id字段包含唯一的ObjectID值。

默认情况下,在集合中插入文档时,如果您没有在字段名称中添加带有_id的字段名称,则MongoDB将自动添加一个Object id字段

所以原理是只要我们在添加的时候有这个字段名叫做“_id”就可以完成主键的替换。不在使用系统自带的生成的id.

我们来进行尝试:

使用代码:

db.ExampleDB.insert
({"_id":1,"员工姓名":"代码阿丹"})

 我在这个文档中规定使用了字段名:“_id”

 显示添加成功,使用上一小节的查询输出来查看一下,代码阿丹的id是否为1.替换掉系统自己生成的id。

可以看到完成了主键id的规则替换。

 说明我们可以使用给字段名“_id”赋值来作为集合的主键。

使用mongodb中的查询语句find()来进行查询mongodb文档

        通过条件查询的语句的执行我们就可以从mongodb中拿到更精准的的数据。以及组合等数据。从后台拿取的数据越精确对于后面的开发就会省力很多。

        那么MongoDB就提供了一个名为db.collection.find()的函数,该函数用于从MongoDB数据库中检索文档。

基本查询操作:

        基本查询操作包括一些简单的操作,比如获取MongoDB集合中的所有文档。

        因为我们之前的操作中的我们新建了一个ExampleDB集合。所以我们就可以执行下面的命令。

db.ExampleDB.find({})

指令解析:

        db.ExampleDB.find({}) 这个 MongoDB 语句的作用是在 ExampleDB 数据库中查找所有文档。

find() 方法是 MongoDB 中用于查询文档的方法,它接受一个查询条件作为参数,并返回符合条件的所有文档。在这个例子中,查询条件是一个空对象 {},表示没有限制条件,因此会将数据库中的所有文档都返回。

{} 这个符号表示一个空的查询条件,也可以使用其他条件来限制查询的结果。例如,你可以使用类似于 { "员工姓名": "阿丹" } 的条件来查询员工姓名为 "阿丹" 的文档,或者使用类似于 { "员工编号": { $gt: 100 } } 的条件来查询员工编号大于 100 的文档。

因此,db.ExampleDB.find({}) 这个语句的作用是返回 ExampleDB 数据库中的所有文档,而 {} 表示没有限制条件,会返回所有文档。

条件查询

明确条件查询

        比如我想要查询员工编号为1的员工。下面是一个例子:

#查询员工编号为1的员工
db.ExampleDB.find({"员工编号":1}).forEach(printjson)

这个语句中使用了{},中括号的方式,在中括号中使用了json的形式来规定规则,来查询指定的编号员工。

范围查询

        使用大于搜索条件,它实际上搜索那些大于指定值的文档。

        比如我想查询员工标号大于2的文档,下面是例子:

#查询员工编号大于2的员工
db.ExampleDB.find({"员工编号":{$gt : 2}}).forEach(printjson)

 解释说明:

        $gt为查询选择运算符,意思是使用大于号表达式。

 给大家提供一下有关的判断表达式;

  • $lt:小于
  • $eq:等于
  • $ne:不等于
  • $gt:大于等于
  • $lt:小于等于

MongoDB游标教程:通过示例来学习

        当使用db.collection.find()函数在集合中搜索文档时,结果将返回指向文档集合的指针,该指针称为游标。类似于指针。

        默认情况下,返回查询结果时,游标将自动进行迭代。当然可以一个接一个明确展示游标中返回的结果目录。

        比如在集合中有三个文档,光标初始化指向第一个文档,然后遍历该集合的所有文档。

 示例代码:

#演示游标
var myExampleDB = db.ExampleDB.find({});
while(myExampleDB.hasNext()){print(tojson(myExampleDB.next()))
}

 代码解释:

        这段代码的作用是在 ExampleDB 数据库中查找所有文档,并将每个文档以 JSON 格式打印到控制台上。

        首先,通过 db.ExampleDB.find({}) 方法查询 ExampleDB 数据库中的所有文档,返回一个游标对象 myExampleDB

        然后,使用 while 循环遍历游标中的每个文档,直到游标中的文档遍历完毕。在循环体中,使用 tojson() 函数将每个文档转换为 JSON 格式,并使用 print() 函数将 JSON 打印到控制台上。

总的来说,这段代码的功能是查询 ExampleDB 数据库中的所有文档,并将每个文档以 JSON 格式打印到控制台上

MongoDB limit查询结果

        这个修饰符用于限制查询结果集中返回的文档数。下面就是例子。

#limit结果
db.ExampleDB.find().limit(2).forEach(printjson)

这个语法和用法和mysql中的类似但不一样。这个函数中参数是几就查出几个文档。

MongoDB中的排序

在MongoDB中是支持根据集合中的任何键升序或者降序来制定要返回的文档的顺序的。

示例代码:

#根据员工编号倒序排序
db.ExampleDB.find().sort({ 员工编号: -1}).forEach(printjson)

这里清楚地显示了按Employeeid降序返回的文档。

值为1则按照升序。

MongoDB中的计数函数Count()

聚合的概念是对查询中返回的结果进行计算。例如,假设我们想知道根据触发的查询集合中文档的数量是多少,那么MongoDB提供了count()函数。

让我们可以查询文档中数量。

让我们看一个例子。

#查看集合中文档数量
db.ExampleDB.count()

这里是一些count()函数的用法

在 MongoDB 中,count() 函数用于计算集合中满足指定条件的文档数量。count() 函数接受一个查询条件作为参数,并返回满足条件的文档数量。

以下是一些使用 count() 函数的示例:

计算集合中所有文档的数量:

 

db.myCollection.count({})

 

计算集合中指定条件的文档数量:

db.myCollection.count({ "key": "value" })

 

使用 match 管道操作符计算集合中匹配条件的文档数量:

db.myCollection.aggregate([{ $match: { "key": "value" } },{ $count: "count" }
])

 

使用 match 和 group 管道操作符计算分组后的文档数量:

db.myCollection.aggregate([{ $match: { "key": "value" } },{ $group: { _id: "groupKey", count: { $sum: 1 } } }
])

以上示例中,count() 函数分别用于计算集合中所有文档数量、计算满足特定条件的文档数量、使用 match 和 group 管道操作符计算分组后的文档数量。

MongoDB中的删除文件remove()

在MongoDB中,db.collection.remove()方法用于从集合中删除文档。所有文档都可以从集合中删除,也可以仅从符合特定条件的文档中删除。

如果仅发出remove命令,则所有文档将从集合中删除。

下面的代码示例演示如何从集合中删除特定文档。

#删除员工标号为4的文档
db.ExampleDB.remove({员工编号:4})

可以看到对于删除对应字段名和值的语法。

 使用 Update()更新MongoDB文档

MongoDB提供了update()命令来更新集合的文档。仅仅更新要更新的文档,可以将条件添加到更新语句,以便更新选定的文档。

该命令中的基本参数是需要更新文档的条件,其次是需要执行的修改。

操作思路:

  1. 发出更新命令;
  2. 选择要用于确定需要更新哪个文档的条件。在我们的例子中,我们要更新员工ID为22的文档;
  3. 使用set命令修改字段名称;
  4. 选择要修改的字段名称,并相应地输入新值。
#修改员工标号为1的名字
db.ExampleDB.update({"员工编号":1}, {$set:{"员工姓名":"库库帅阿丹"}}
)

 看到表明,一条记录符合条件,一条记录修改了相关字段!!!

下面是一些update的用法

这个代码是使用 MongoDB 的 update() 函数来更新名为 "员工编号" 的字段值为 1 的文档中的 "员工姓名" 字段的值为 "库库帅阿丹"。

具体来说,update() 函数接受两个参数:

  1. 查询条件,指定要更新的文档。在这个例子中,查询条件是 {"员工编号":1},表示要更新 "员工编号" 字段值为 1 的文档。
  2. 更新操作,指定要对文档进行的更新操作。在这个例子中,更新操作为 { $set: { "员工姓名": "库库帅阿丹" } },表示要将 "员工姓名" 字段的值更新为 "库库帅阿丹"。

其中,更新操作可以使用以下几个操作符:

  • $set: 设置指定字段的值。
  • $unset: 删除指定字段。
  • $rename: 重命名指定字段。
  • $inc: 增加指定字段的值。

除了上面的示例,update() 函数还可以使用其他参数来控制更新行为,比如 multi 参数(指定是否更新多个文档)和 upsert 参数(指定是否插入新文档)。

总之,update() 函数是 MongoDB 中用于更新文档的函数,可以方便地对数据库中的文档进行修改操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/52924.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【docker】docker-compose服务编排

目录 一、服务编排概念二、docker compose2.1 定义2.2 使用步骤2.3 docker-compose安装2.4 docker-compose卸载 三、编排示例 一、服务编排概念 1.微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启…

通过MySQL删除Hive元数据信息

之前遇到过一个问题,在进行Hive的元数据采集时,因为Hive表的文件已经被删除了,当时是无法删除表,导致元数据采集也发生了问题,所以希望通过删除Hive表的元数据解决上述问题。 之前安装时,经过特定的配置后…

Cocos creator(2d) 使用 shader + uv 实现单张图片衔接滚动效果

在游戏中,当我们需要让背景图片无缝衔接无限滚动时(打飞机这种背景一直滚动,或者肉鸽游戏地图一直在走等等),通常的做法是 在游戏中放两个背景node,在update中控制这两张背景图片的移动,并让其收尾衔接即可。(具体代码…

【LeetCode 75】第十七题(1493)删掉一个元素以后全为1的最长子数组

目录 题目: 示例: 分析: 代码运行结果: 题目: 示例: 分析: 给一个数组,求删除一个元素以后能得到的连续的最长的全是1的子数组。 我们可以先单独统计出连续为1的子数组分别长度…

在线五子棋对战

目录 数据管理模块(数据库设计) 前端界面模块 业务处理模块 会话管理模块网络通信模块(session,cookie) 在线管理模块 房间管理模块 用户匹配模块 项目扩展 数据管理模块(数据库设计) 数据库中有可能存在很多张表&#xf…

【深度学习】在 MNIST实现自动编码器实践教程

一、说明 自动编码器是一种无监督学习的神经网络模型,主要用于降维或特征提取。常见的自动编码器包括基本的单层自动编码器、深度自动编码器、卷积自动编码器和变分自动编码器等。 其中,基本的单层自动编码器由一个编码器和一个解码器组成,编…

元素2D转3D 椭圆形旋转实现

椭圆旋转功能展示 transform-style: preserve-3d;(主要css代码) gif示例(背景图可插入透明以此实现边框线的旋转) 导致的无法点击遮挡问题可以参考我的另一个文章 穿透属性-----------------------css穿透属性 实时代码展示

11.物联网操作系统内存管理

一。STM32编译过程及程序组成 STM32编译过程 程序的组成、存储与运行 MDK生成的主要文件分析 1.STM32编译过程 1.源文件(Source code)--》目标文件(Object code) .c(C语言)通过armcc生成.o,.s(汇编&…

SQL Server安装配置

又得装数据库...头秃 报错 其他信息: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证... 1是可能主机名不一致导致的,这种换主机名,二是没开sql 服务。 第二种先打开SQL Server 资源配置管理器 打…

SpringBoot + ajax 实现分页和增删查改

0目录 1.SpringBoot 2.SpringBoot分页;增删改查 1.SpringBoot分页 创建数据库和表 创建SpringBoot工程,引入springboot下的分页依赖 配置application.yml 实体类 Mapper接口 Mapper.xml Service接口 Service实现类 控制层 测试 加…

图像 分割 - Fast-SCNN: Fast Semantic Segmentation Network (arXiv 2019)

Fast-SCNN: Fast Semantic Segmentation Network - 快速语义分割网络(arXiv 2019) 摘要1. 引言2. 相关工作2.1 语义分割的基础2.2 DCNN的效率2.3 辅助任务预训练 3. 提议的Fast-SCNN3.1 动机3.2 网络架构3.2.1 学习下采样3.2.2 全局特征提取器3.2.3 特征…

关于docker的一些深入了解

本文将深入介绍一下docker方面的知识,不尽完全,慢慢完善。 进程 进程的概念 在介绍docker的相关知识前,先了解一下相关概念。进程就是系统中正在运行的程序,进程是操作系统的概念,每当我们执行一个程序时&#xff0…