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

news2024/12/25 12:31:00

阿丹:

        本文章将描述以及研究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 ExampleDB

db.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.coloradmin.cn/o/833022.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工作流管理系统如何提升生产力

工作流管理工具通过提供无缝沟通和简化流程来提高团队的生产力。如果部署得当,工作流管理可以长期获得回报。 以下是工作场所管理系统如何提高员工的生产力: 1、无需更多的状态更新会议 工作流管理系统使您的员工无需跟踪电子邮件和讨论线程来评估项目…

【Pytorch】下载CIFAR10数据集报错: urllib.error.URLError: <urlopen error name: https>

在使用Pytorch 下载CIFAR10的时候,遇到一个报错, 可能是网络特别慢导致的,一般情况下都会遇到这个报错。 解决办法: 1、到官网直接下载这个压缩包,解压。 http://www.cs.utoronto.ca/~kriz/cifar.html 解压后&#x…

一套ai绘图软件教程帮你打开创作新篇章

在一个寂静的艺术工作室里,住着一个渴望成为画家的年轻人,名叫艾米。她梦想能够运用自己的创造力和手艺,创作出令人叹为观止的艺术作品。然而,面对空白的画布,她感到无从下手,不知道该从何处开始。每次她试…

数据可视化(七)常用图表的绘制

1. #seaborn绘制常用图表 #折线图 #replot(x,y,kind,data) #lineplot(x,y,data) #直方图 #displot(data,rug) #条形图 #barplot&…

MONAI的测试与使用(一)

MONAI的测试与使用(一) 一.Transform 的分类二 普通变换和字典变换的联系与区别三 加载与显示图像 一.Transform 的分类 具体API函数请参考文档:https://docs.monai.io/en/latest/transforms.html 二 普通变换和字典变换的联系与区别 普通变…

DAY2,C高级(shell脚本的使用)

1.今日思维导图&#xff1b; 2.递归实现&#xff0c;输入一个数&#xff0c;输出这个数的每一位&#xff1b; #include<my_head.h>void Output(int num) {if(num 0)return;Output(num/10);printf("%d ",num%10);}int main(int argc, const char *argv[]) {in…

软件测试自动化selenuim的常用方法和属性总结

selenuim其实主要就是使用webdriver实例对象的方法和属性。 常用属性 1 driver.current_url 当前网页的请求地址 2 driver.current_window_handle 句柄&#xff0c;用于页面切换 3 driver.page_source 网页源代码 4 driver.title 网站的title&#xff0c;tab栏上显示的内容…

『Linux学习笔记』Linux服务器硬件配置查看

Linux服务器硬件配置查看 文章目录 一. 操作系统1.1. 发行版本1.2. 查看内核版本 二. CPU2.1. CPU统计信息2.2. CPU型号2.3. 查看物理CPU数目2.4. 每个物理CPU的核数2.5. 查看逻辑CPU的个数 三. GPU四. 内存4.1. 内存使用情况4.2. 内存硬件情况4.3. 查看内存使用信息 五. 硬盘…

幂等性问题 —— 如何防止重复创建订单

幂等性&#xff1a;对接口的多余重复调用的结果和单次调用的结果一致。 一、需要幂等性的场景 二、幂等性实现方案 核心思想&#xff1a;首先要根据业务判断什么是重复相同的请求&#xff0c;然后相同的请求都携带或生成一个唯一的识别码&#xff0c;这样在服务端就可以进行判…

JVM调优工具详解以及实战

准备 事先启动一个web应用程序&#xff0c;用jps查看进程id&#xff0c;接着用各种jdk自带的命令优化应用 Jmap jmap -histo 6160 #查看历史生成的实例 jmap -histo:live 6160 #查看当前存活的实例&#xff0c;执行过程中可能会触发一次full gc jmap -histo:live 6160 &…

关于数据仓库那些事 - 数据质量和数仓主题

数字化时代&#xff0c;数据成为了人类社会中必不可少的元素&#xff0c;也变成了现代企业经营管理中的关键。借助海量的数据&#xff0c;企业进行了深层次的数字化改革&#xff0c;把数据当成了企业发展的核心&#xff0c;但无效的数据即使规模再大&#xff0c;也对企业没有意…

EasyExcel工具类,一键实现表格导入导出,有无对应实体类均可

EasyExcel工具类&#xff0c;一键实现表格导入导出&#xff0c;有无对应实体类均可 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存&#xff0c;poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题&#xff0c;但…

linux du命令解析(递归计算文件子目录大小)(计算大小)(计算容量)

文章目录 du命令简介用法常用选项示例 文档原 中文选项详细解释示例递归统计某个目录下所有文件大小&#xff08;不足单位会向上取整&#xff09;&#xff08;注意&#xff1a;可能会将目录大小也统计进去&#xff0c;目录大小为4096字节4kb&#xff1f;&#xff09; du命令使用…

【第一阶段】kotlin语言的String模板

1.在Java中拼接字符串使用的是“” 2.在kotlin中使用"${}" 3.kotlin语言中if是表达式&#xff0c;更灵活 fun main() {val city"西安"val time24//java中写法println("我在"city"玩了"time"小时")//kotlin中写法&#xff0…

2023年华数杯C题思路

c题 母亲身心健康对婴儿成长的影响 母亲是婴儿生命中最重要的人之一,她不仅为婴儿提供营养物质和身体保护,还为婴儿提供情感支持和安全感。母亲心理健康状态的不良状况&#xff0c;如抑郁、焦虑压力等&#xff0c;可能会对婴儿的认知、情感、社会行为等方面产生负面影响。压力…

一文读懂芯片内存

1.导读 一个芯片通常需要三种主要的物理内存类型&#xff1a;SRAM、Flash和DDR。 SRAM&#xff08;静态随机存储器&#xff09;&#xff1a;SRAM是一种高速、易访问和易擦写的存储器类型。它通常用于存储变量、缓冲区、堆栈和其他动态数据。SRAM的特点是读写速度快&#xff0c…

指针经典笔试题强训(附图详解)

目录 笔试题1&#xff1a; 解析&#xff1a; 运行结果&#xff1a; 笔试题2 解析&#xff1a; 运行结果&#xff1a; 笔试题3 解析&#xff1a; 运行结果&#xff1a; 笔试题4 解析&#xff1a; 运行结果&#xff1a; 笔试题5 解析&#xff1a; 运行结果&#xff1a;…

基于人工智能的状态监测帮助结束冷却塔的维护“噩梦”

冷却塔是将水蒸气冷却成较低温的水、将系统的废热排到大气层的排热装置&#xff0c;在工业生产中扮演着不可或缺的关键角色。大型工业冷却塔的主要用途是用来冷却在水冷系统中的循环水。这些水冷系统广泛应用于发电厂、炼油厂、石化厂、天然气制造厂、食品加工厂、半导体厂等工…

<C++> 类和对象(上) 面向对象

1.面向对象 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c; 通过函数调用逐步解决问题。 C是基于面向对象的&#xff0c;关注的是对象&#xff0c;将一件事情拆分成不同的对象&#xff0c;靠对象之间的交互完成。 2.类 C语言结构…

基于 JavaScript 的富文本编辑器框架简单使用

1.打开wangEditor wangEditor开源 Web 富文本编辑器&#xff0c;开箱即用&#xff0c;配置简单https://www.wangeditor.com/ 2.html文件 <link href"https://unpkg.com/wangeditor/editorlatest/dist/css/style.css" rel"stylesheet"> <style&…