MongoDB文档数据库

article/2025/11/6 1:15:09

一,引言

        MongoDB 是一个开源的文档数据库,并是领先的NoSQL数据库。

        MongoDB 是由C++语言编写。

        通过本系列教程的讲解,使得学习者可以了解并掌握创建和部署高度可扩展高性能面向对象数据库MongoDB概念和理解。

        该系列教程是专为软件专业人员学习MongoDB 数据库提供简单轻松的步骤。

        通过学习希望学习者理解MongoDB 的概念和使用技巧。

        通过系统连续性的学习可以使学习者在数据库领域的专业水平提升到一定的层次。

        应该有一定的数据库基础,比如学习过SQLServer、MySQL或Oracle等。

        由于要开发高性能的数据库,文本编辑器执行程序等。

        如果已经理解数据库的基本概念(RDBMS)将对理解本教程有帮助。

        了解Json数据格式或掌握JavaScript编程基础。

二,简介

        MongoDB 是一个跨平台的,面向文档的数据库,提供高性能,高可用性、高并发和可扩展性方便。 MongoDB 工作在收集和文件的概念。

        数据库是一个物理容器集合。每个数据库都有自己的一套文件系统上的文件。一个单一的MongoDB 服务器通常有多个数据库。

        集合是一组MongoDB的文档。它相当于一个RDBMS表。收集存在于一个单一的数据库。集合不执行模式。集合内的文档可以有不同的领域。通常情况下,一个集合中的所有文件是相同或相关的目的。

        文档是一组 键 - 值 对。文件动态模式。动态模式是指,在相同集合中的文档不需要具有相同的字段或结构组的公共字段的集合的文档,可以容纳不同类型的数据。

        显示RDBMS术语与MongoDB的关系

        MongoDB 优点 

                任何关系型数据库,具有典型的架构设计,显示表和这些表之间的关系。然而在 MongoDB 中,没有什么关系的概念。

        MongoDB 比 RDBMS 的优势

        架构: MongoDB 是文档型数据库,其中一个集合保存不同的文件。字段的数量,内容和该文件的大小可以是从一个文件复制到另一个。

        一个单一的对象是结构清晰

        没有复杂的连接

        深查询能力。 MongoDB 支持动态查询使用基于文档的查询语言,如SQL几乎一样强大的文件

        调优

        易于规模化:MongoDB 是易于扩展

        不需要数据库对象的应用程序对象转换/映射

        使用内部存储器存储(窗口)工作组,从而实现更快的数据存取

        为什么要使用 MongoDB

        JSON风格文件的形式,面向文档存储:数据存储

                对任何属性可索引

                复制和高可用性

                自动分片

                丰富的查询

                快速就地更新

                MongoDB 的专业技术支持

        应该在哪里使用 MongoDB ?

        大数据

                内容管理和交付

                移动和社交基础设施

                用户数据管理

                数据平台

三,MongoDB 安装

        MongoDB 安装

        步骤1:在 Windows上查看当前系统版本。

         当确定了当前Windows系统版本号后,去MongoDB 官网下载对应的MongoDB 安装程序。 · 32位版本的MongoDB 数据库小于2GB,适合仅用于测试和评估目的。

        步骤2:解压缩下载到本地的压缩文件到制定的磁盘位置。

        步骤3:创建好制定的两个目标文件夹 data 和 log。

        MongoDB 服务的启动与停止

        步骤1:使用MongoDB 指令 mongod 完成MongoDB 的安装。

        步骤2:在Windows终端输入指令 mongo.exe 测试数据库连接。

        步骤3:也可以打开网页浏览器,输入 http://localhost:27017 查看

        步骤4:停止服务需要在控制台进入到admin数据库,并输入指令。 

        以Windows服务方式进行安装

        只需将:mongod.exe 指令扩展成如下即可。

        查看Windows系统服务可以看到如下情况。 

        使用Windows服务方式进行安装的MongoDB ,我们可以使用指令开启或关闭系统服务。

        开启MongoDB 服务。

        关闭MongoDB 服务 

        以Windows服务方式进行安装 

        只需将步骤4:mongod.exe 指令扩展成如下即可。

四,MnogoDB的使用

        MnogoDB数据类型

                        String : 这是最常用的数据类型来存储数据。在MongoDB中的字符串必须是有效的UTF-8。

                        Integer : 这种类型是用来存储一个数值。整数可以是32位或64位,这取决于您的服务器。

                        Boolean : 此类型用于存储一个布尔值 (true/ false) 。

                        Double : 这种类型是用来存储浮点值。

                        Min/ Max keys : 这种类型被用来对BSON元素的最低和最高值比较。

                        Arrays : 使用此类型的数组或列表或多个值存储到一个键。

                        Timestamp : 时间戳。这可以方便记录时的文件已被修改或添加。

                        Object : 此数据类型用于嵌入式的文件。

                        Null : 这种类型是用来存储一个Null值。

                        Symbol : 此数据类型用于字符串相同,但它通常是保留给特定符号类型的语言使用。

                         Date : 此数据类型用于存储当前日期或时间的UNIX时间格式。可以指定自己的日期和时间,日期和年,月,日到创建对象。

                        Object ID : 此数据类型用于存储文档的ID。

                        Binary data : 此数据类型用于存储二进制数据。

                        Code : 此数据类型用于存储到文档中的JavaScript代码。

                        Regular expression : 此数据类型用于存储正则表达式。

        数据库的创建

                使用 use 数据库名称 用于创建数据库。该命令将创建一个新的数据库,如果它不存在,否则将返回现有的数据库。

                使用 db 用于查看当前所在数据库

                使用 show dbs 查看当前所有数据库

                MonogDB安装后默认有三个数据库:

                        admin数据库:用于记录MongoDB的用户及权限管理相关数据;

                        local数据库:用于记录MongoDB的日志信息等相关数据;

                        test数据库:测试数据库(由于没有任何数据库对象因此不显示)

                使用 mongo 通过 Mongo Shell 登录连接到MongoDB在没有指明数据库名称的时候默认登录的是test数据库。

                使用db.dropDatabase() 删除当前所在的数据库。

        集合的创建   

                使用db.createCollection(name, options) 是用来创建集合。

                        name:String 要创建的集合名称

                        options:Document (可选)指定有关内存大小和索引选项

                使用show collections 查看当前数据库中的所有集合。

                索引的元信息存储在每个数据库的system.indexes集合中. 不能插入删除

                使用db.集合名称.drop()用来删除一个集合。

        插入文档

                需要使用 MongoDB 的 insert() 方法。

                操作1:创建一个数据库名称为 mydb

                操作2:创建一个集合movie

                操作3:插入一条数据,db.集合名称.insert({key1:val1,…..})

db.movie.insert({name:"当幸福来敲门",author:"张三",year:2002})

                操作4:批量插入数据

var movies =[{name:"当幸福来敲门"},{name:"阿甘正传"},{name:"我是传奇"}]
db.movie.insert(movies)

        查询文档

                需要使用MongoDB 的 find() 方法以非结构化的方式显示所有的文件。

                使用MongoDB 的 findOne() 返回集合中的第一条文档数据。

                使用MongoDB 的 find() .pretty()方法以结构化的方式显示所有的文件。

                操作4:创建一个集合infos用于存放姓名、年龄、性别、城市信息

                操作5:查询集合所有文档对象

                操作6:查看当前集合中的第一个文档数据

                操作7:再次查看分析结果区别

                操作8:查看居住在上海的用户信息

db.infos.find({city:"shanghai"})

                操作9:查询不居住在上海的

db.infos.find({city:{$ne:"shanghai"}})

                操作10:查看年龄大于15岁的用户信息

db.infos.find({age:{$gte:15}})

                $lt 小于;  $lte 小于等于 ;  $gt 大于;  $gte 大于等于;  $ne 不等于

                操作11:查看女性用户并且居住在上海的用户信息

db.infos.find({city:"shanghai",sex:"female"})

                操作12:查看居住在上海或天津的用户信息

db.infos.find({$or:[{city:"shanghai"},{city:"tianjin"}]})

                操作13:查看年龄大于15岁并且居住在广州或上海的用户信息

db.infos.find({age:{$gt:15},$or:[{city:"shanghai"},{city:"guangzhou"}]})

        更新文档

                使用db.collection.update( criteria, objNew, upsert, multi )更新现有的文档。

                        Criteria 更新操作的条件,类似于SQL语句中的where字句

                        objNew update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的

                        Upsert 这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

                        multi  mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

                操作14:将姓名为 Tom 的用户年龄更新为11岁

db.infos.update({name:"Tom"},{$set:{age:11}},false,true)

        文档的删除

                MongoDB的 remove(deletion criteria, justOne) 方法用于从集合中删除文档。remove() 方法接受两个参数。

                        deletion criteria :(可选)删除标准,根据文件将被删除。

                        justOne : (可选)如果设置为true或1,然后只删除一个文件。

                操作15:删除用户姓名为Tom的用户信息数据

db.infos.remove({name:"Tom"})

                操作16:删除infos集合的全部数据(类似truncate)

db.infos.remove({})

        投影

                mongodb 投影意思是只选择必要的数据而不是选择一个文件的数据的整体。如果一个文档有5个字段,需要显示只有3个,然后选择其中只有3个字段。

                MongoDB 的find()方法,在MongoDB查询文档接受的第二个可选参数是要检索的字段列表。

                在MongoDB中,当执行find()方法,那么它会显示一个文档所有字段。要限制这一点,需要设置的字段列表值10 1用来显示字段而0是用来隐藏字段。

                操作1:查询用户的姓名和所在城市(字段默认都是1)

db.infos.find({},{_id:0,age:0,sex:0})

        限制记录

                要限制 MongoDB 中的记录,需要使用 limit() 方法。 limit() 方法接受一个数字型的参数,这是要显示的文档数。如果不指定数量 limit() 方法的参数,它会显示从集合中的所有文件。

                操作2:显示两个用户信息数据

db.infos.find().limit(2)

                除了limit() 方法,还有一个方法skip() 也接受数字类型的参数,并使用跳过的文档数。默认值skip()方法是0

db.infos.find().limit(2).skip(2)

                Skip()+Limit() 实现文档数据分页显示

                pageSize: 单页显示的文档个数,使用limit(pageSize)控制

                skip是第(n-1)*pageSize,n代表页数

                显示第page页数据 limit(pageSize)  skip((page-1)*pageSize)

                要在 MongoDB 中的文档进行排序,需要使用sort()法。 sort() 方法接受一个文档,其中包含的字段列表连同他们的排序顺序。要指定排序顺序1-11用于升序排列,而-1用于降序。

                操作3:按照年龄降序排列用户信息

db.infos.find().sort({age:1})

        


http://chatgpt.dhexx.cn/article/TurFkNbw.shtml

相关文章

NOSQL,MongoDB是什么?

什么是MongoDB ? MongoDB 是一个开源的文档数据库,它基于 C 语言编写,性能高,可用性强,能够自动扩展。 MongoDB 是最流行的 NoSQL 数据库之一,原生支持分布式集群架构,特别适合处理大数据&…

胖人瘦下来后,会长高或变矮吗?

一个还算高的胖子,单看是不显矮的,但正所谓没有对比就没有伤害,若将他与一个跟他一般高的瘦人排在一起,就会无端显得矮了一截,当然也只是“显得”矮而已,并非真的矮。 那么,他们要是瘦下来后会…

PTA 7-40 到底是不是太胖了

很明显题目中有绝对值&#xff0c;需要调用绝对值函数。 整形绝对值&#xff1a;abs函数 双精度浮点型绝对值&#xff1a;fabs函数 长整型绝对值&#xff1a;labs函数 他们的头文件都是include<math.h>或者include<stdlib.h> 接着一个for循环就可以解决问题。…

PTA题目 到底是不是太胖了

据说一个人的标准体重应该是其身高&#xff08;单位&#xff1a;厘米&#xff09;减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材&#xff08;即 | 真实体重 − 标准体重 | < 标准体重10%&#xff09;。已知市斤是公斤的两倍。现给定一群人…

[模板]详细设计说明书(整理版)【申明:来源于网络】

[模板]详细设计说明书&#xff08;整理版&#xff09;【申明&#xff1a;来源于网络】 地址&#xff1a;http://www.doc88.com/p-0724366501067.html

模板设计模式

模板设计模式—基于抽象类的&#xff0c;核心是封装算法 模板方法定义了一个算法的步骤&#xff0c;并允许子类为一个或多个步骤提供具体实现模板&#xff08;模板方法&#xff09;模式&#xff08;Servlet、AQS&#xff09; 在一个方法中定义一个算法的骨架&#xff0c;并将一…

资深码农教你写详细设计(附示例模板)

很多小伙伴都不知道怎么写详细设计&#xff0c;本期就带大家看一下详细设计都有哪些内容。 喜欢听我叨叨的&#xff0c;直接看视频 资深码农教你写详细设计&#xff08;附模板&#xff09; 不同的公司&#xff0c;详细设计不太一样&#xff0c;有的细&#xff0c;有的粗&#x…

【零基础深度学习教程第二课:深度学习进阶之神经网络的训练】

深度学习进阶之神经网络的训练 神经网络训练优化一、数据集1.1 数据集分类1.2 数据集的划分1.3 同源数据集的重要性1.4 无测试集的情况 二、偏差与方差2.1 概念定义2.1.1 偏差&#xff08;bias&#xff09;2.1.2 方差&#xff08;variance&#xff09; 2.2 图形定义2.3 衡量偏差…

深度学习小白入门教程-基础运用篇

深度学习小白入门教程-基础运用篇 可能有图片没部署成功&#xff0c;如果有影响&#xff0c;请回小主主页PyCharm玩个文本类数据二分类第一步&#xff0c;把我们可能用到的包安排上&#xff0c;还有python的标准主函数~第二步&#xff0c;导入数据集&#xff0c;cv大法就好啦~第…

深度学习(一、入门)

从人工智能开始 让机器具有人类的智能&#xff0c;能够理解人类语言、语音、图片、视频以及各种人类活动数据&#xff0c;并以此为依托辅助甚至代替人类做出决策&#xff0c;是人工智能的终极目标。最早提到机器智能的是图灵&#xff0c;1950年&#xff0c;他提出机器是否拥有…

深度学习如何入门?

beanfrog &#xff0c;computer vision 161 人赞同 先了解个大概 A Deep Learning Tutorial: From Perceptrons to Algorithms 神经网络肯定是要学习的&#xff0c;主要是BP算法&#xff0c;可以看看PRML3、4、5三章&#xff0c;可先忽略其中的贝叶斯视角的解释。一些主要的算…

深度学习实战之Python教程(1)

Python入门教程 以熟练使用Pytorch完成深度学习模型为目标&#xff0c;简单介绍Pytorch涉及到的Python基础&#xff08;Python其它知识可以在遇到后再学习&#xff0c;先动手&#xff09;。 这篇教程并不涉及Python的复杂方法&#xff0c;教程的结构如下&#xff1a; 1…

深度学习教程(3) | 浅层神经网络(吴恩达·完整版)

作者&#xff1a;韩信子ShowMeAI教程地址&#xff1a;https://www.showmeai.tech/tutorials/35本文地址&#xff1a;https://www.showmeai.tech/article-detail/214声明&#xff1a;版权所有&#xff0c;转载请联系平台与作者并注明出处收藏ShowMeAI查看更多精彩内容 本系列为吴…

《深度学习入门》(一)

感知机&#xff08;perceptron&#xff09; 感知机是由美国学者Frank Rosenblatt在1957年提出的。 学习原因&#xff1a;作为神经网络&#xff08;深度学习&#xff09;的起源算法。学习感知机的构造也就是学习通向神经网络和深度学习的一种重要思想。 1. 感知机是什么 感知机…

深度学习基础学习

CNN发展&#xff1a;BP--LeNet(标志CNN面世&#xff09;--Deep learning(2012) 卷积神经网络CNN&#xff1a;包含卷积层的神经网络 利用BP&#xff08;反向传播&#xff09;算法训练LeNet5网络 检索、目标检测、图像分割、图像描述 全连接层&#xff1a;神经元全连接 BP算法…

【深度学习基础】

最终效果如上图所示&#xff1a;真不知道这一路有多艰难 众所周知CHATGPT 可以做表格和 公式 &#xff0c;但它输出的文本是直接渲染好的 你是直接复制不了的&#xff0c;你只能复制它出来的字体 于是我尝试了各种 想让它输出表格和文字的方法 包括且不限于 去控制台看它输出…

深度学习教程(2) | 神经网络基础(吴恩达·完整版)

作者&#xff1a;韩信子ShowMeAI教程地址&#xff1a;https://www.showmeai.tech/tutorials/35本文地址&#xff1a;https://www.showmeai.tech/article-detail/213声明&#xff1a;版权所有&#xff0c;转载请联系平台与作者并注明出处收藏ShowMeAI查看更多精彩内容 本系列为吴…

深度学习教程(4) | 深层神经网络(吴恩达·完整版)

作者&#xff1a;韩信子ShowMeAI教程地址&#xff1a;https://www.showmeai.tech/tutorials/35本文地址&#xff1a;https://www.showmeai.tech/article-detail/215声明&#xff1a;版权所有&#xff0c;转载请联系平台与作者并注明出处收藏ShowMeAI查看更多精彩内容 本系列为吴…

在服务器上进行深度学习的入门教程

1.远程登录 Windows用户推荐使用Xshell 主机那里填上服务器IP&#xff0c;下面填一下端口号&#xff0c;然后点击连接&#xff0c;之后会让你输入用户名密码&#xff0c;输入之后就可以进入啦 2.GPU状态 进入之后可能大家最想关注的就是GPU占用情况&#xff0c;可以使用一下两…

深度学习基础入门

课程简介 本课程共分为三个部分:基础理论、深度神经网络基本结构以及网络优化与实践。本课程采用了理论结合实践的讲解方式,方便读者边学边练,理解巩固。在解释相关概念时,作者尽力使用简单、直观、可实现的公式语言描述,尽量避免使用图形、比喻和白话等容易使初学者误入…