MongoDB自学笔记(一)

一、MongoDB简介

MongoDB是一款基于C++开发的文档型数据库。与传统的关系型数据库有所不同,MongoDB面向的是文档,所谓的文档是一种名为BSON (Binary JSON:二进制JSON格式)是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
笔者用的是最新的Mongo7.0,客户端工具则使用的是Navicat。

二、MongoDB和MySQL的区别

这里直接引用知乎上的一篇文章,个人感觉写的比较清楚。https://zhuanlan.zhihu.com/p/689412013

三、基本概念

1、数据库:DB

指的就是Mongo的一个实例和MySQL中的数据库接本一致,用于保存一个活动多个集合。

2、集合:Collection

集合是Mongo中的概念,对应到MySQL中就是一张表,例如 user表、order表等

3、文档:Document

Mongo是面向文档的数据库,文档是Mongo中最基本的数据单位,对应到MySQL中就是某张表里的一条数据。

4、索引:Index

索引是一种用于加快查询的数据结构,这一点和MySQL中类似。但是也有一定的区别,Mongo中的索引数据结构是B树,而MySQL中默认是B+树

5、小结

MongodbMysql
DB 数据库DB数据库
集合Collection某一张表
文档Document某一条数据
索引Index索引

四、基本操作

1、使用某个数据库

在这里我们有一个名为test的数据库,如果我们想要使用该数据库,可以使用命令 use
image.png
我们在客户端工具(这里笔者用的是Navicat)使用命令 use test,结果如下:image.png

2、集合

2.1、创建集合

创建集合对应到MySQL中就是创建一张表,集合就是我们用于保存文档的地方。创建集合的命令如下
db.createCollection(, )
name:集合的名称
options:可选项
完整的格式如下:

db.createCollection( <name>,{capped: <boolean>,timeseries: {                  // Added in MongoDB 5.0timeField: <string>,        // required for time series collectionsmetaField: <string>,granularity: <string>,bucketMaxSpanSeconds: <number>,  // Added in MongoDB 6.3bucketRoundingSeconds: <number>  // Added in MongoDB 6.3},expireAfterSeconds: <number>,clusteredIndex: <document>,  // Added in MongoDB 5.3changeStreamPreAndPostImages: <document>,  // Added in MongoDB 6.0size: <number>,max: <number>,storageEngine: <document>,validator: <document>,validationLevel: <string>,validationAction: <string>,indexOptionDefaults: <document>,viewOn: <string>,pipeline: <pipeline>,collation: <document>,writeConcern: <document>})

参数解释:由于篇幅限制这里不赘述,直接引用官网的内容
db.createCollection()

实操:创建一个名为learnMongo的集合

方式一:使用db.createCollectoin命令:db.createCollection(“learnMongo”)
结果:
image.png

方式二:直接插入文档,如果对应的集合不存在Mongo会自动帮我们创建集合
例如:db.learnUseMongo.insert({“name”:“hardy”,“age”:29,“gender”:“male”})
结果:WriteResult({ “nInserted” : 1, “writeConcernError” : [ ] }) 从结果中可以看出插入了一条文档
image.png
同时当前集合中也存在一条我们刚刚插入的数据
image.png

2.1、查询集合

正如我们在MySQL中想查看当前数据库有多少表一样,Mongo中也可以查看当前数据库中有多少个集合。
1、查询所有集合的名称:db.getCollectionNames()
image.png
2、查询指定名称的集合
image.png

2.2、删除集合

例如我们要删除名为learnMongo的集合
语法 db..drop()
image.png

3、文档

文档是是MongoDB中的数据载体,是一种类似JSON格式的数据,在MongoDB中称之为BSON(Binary JSON),既然是一种类似JSON的格式,所以 BSON也是 key-value形式的,形如

image.png

3.1、创建文档

在上一节中我们创建了集合(相当于是Mysql中的表),有了集合接下来我们就可以往集合里插入数据。插入数据的语法:db..insert(,)
参数:

参数类型说明
collection字符串要插入的集合,如果不存在则会自动创建
document文档或数组要插入到集合中的文档或文档数组。
writeConcern文档可选。表达写关注的文档。省略以使用默认的写关注。请参阅写关注
如果是在事务中运行,则请勿显式设置此操作的写关注。要将写关注与事务一起使用,请参阅事务和写关注。
ordered布尔可选。如果为 true,则对数组中的文档执行有序插入,如果其中一个文档发生错误,MongoDB 将返回,而不处理数组中的其余文档。
如果为 false,则执行无序插入,如果其中一个文档发生错误,则继续处理数组中的其余文档。
默认值为 true

示例:

db.users.insert({name: {first: "Alan",last: "Turing"},birth: new Date('Jun 23, 1912'),death: new Date('Jun 07, 1954'),contribs: ["Turing machine", "Turing test", "Turingery"],views: NumberLong(1250000)
})

结果:
image.png
image.png

与之类似的还有 db..insertOne(,)以及db..insertMany(,)。用法与上述基本一致,这里不在赘述。

由于篇幅限制,先写到这里希望对你有所帮助。

未完待续

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

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

相关文章

AV1 编码标准帧间预测技术概述

AV1 编码标准帧间预测 AV1&#xff08;AOMedia Video1&#xff09;是一种开源的视频编码格式&#xff0c;它在帧间预测技术上做出了显著的改进和扩展&#xff0c;以提供比现有标准更高的压缩效率和更好的视频质量。以下是AV1帧间预测技术的几个关键点&#xff1a; 参考帧扩展&a…

You are running Vue in development mode.和undefined is not iterable白屏问题

遇到的报错信息如下&#xff0c; 你正在开发模式下运行 Vue。 确保在部署生产环境时打开生产模式 但是我是关闭了的Vue.config.productionTip false 最后发现是服务器问题

数据库作业6

视图作业 1. 创建视图v_emp_dept_id_1 CREATE VIEW v_emp_dept_id_1 AS SELECT emp_name, address FROM emp WHERE dept_id (SELECT dept_id FROM dept WHERE dept_name 销售部); 2. 创建视图v_emp_dept CREATE VIEW v_emp_dept AS SELECT e.emp_name, e.address, d.d…

AI艺术革命:使用神经网络生成创新艺术作品

如何使用神经网络生成艺术作品 1. 简介 神经网络&#xff0c;特别是卷积神经网络&#xff08;CNN&#xff09;和生成对抗网络&#xff08;GAN&#xff09;&#xff0c;在生成艺术作品方面表现出色。本教程将介绍如何使用这些神经网络生成艺术作品。 2. 基础概念 2.1 卷积神…

Ubuntu安装 Nginx

前置条件&#xff1a; 把apt包更新到最新&#xff08;如果更新过就跳过这步&#xff09; 先检查 sudo apt update 后更新 sudo apt upgrade &#xff08;期间要选择确认&#xff0c;输入 y 即可&#xff09; 如果不行可以&#xff1a;sudo apt upgrade --fix-missing 先卸…

buttonrpc解析—server篇

文章目录 前言serveras_serverbindcallproxycallproxy_ runcall_ 总结参考 前言 关于buttonrpc.hpp的解析 server 我们从server.cpp的main函数部分来学习这个hpp文件 int main() {buttonrpc server; server.as_server(5555);//server.bind("redis_command", redis…

IIS的安装及Web服务器深度配置:打造高效稳定的网络门户

在构建现代网络环境的过程中&#xff0c;IIS&#xff08;Internet Information Services&#xff09;作为微软提供的强大Web服务器软件&#xff0c;扮演着至关重要的角色。无论是企业级的网站部署&#xff0c;还是个人开发者的小型项目测试&#xff0c;IIS都能提供稳定、高效的…

无人机使能的边缘计算优化问题

Joint Deployment and Task Scheduling Optimization for Large-Scale Mobile Users in Multi-UAV-Enabled Mobile Edge Computing论文阅读笔记 BackgroundContributionsSystem Model and Problem FormulationLocal Execution ModelMEC Execution ModelUAV Hover Model Propose…

kubernetes概念及基本介绍(一)

部署方式的演进过程 传统部署 直接将应用程序部署在物理机器上&#xff0c;很难合理分配计算机资源&#xff0c;而且程序之间会产生影响 虚拟化部署 可以在一台物理机上运行多个虚拟机&#xff0c;没个虚拟机都是独立的一个环境&#xff0c;程序环境不会产生影响&#xff0c;…

SHRM已开始报名,常见问题答疑来了

2024年SHRM&#xff08;美国人力资源管理认证&#xff09;的第二个考试报名窗口&#xff0c;即国内最后一次SHRM中文考试窗口&#xff0c;已于北美时间2024年6月3日00:00开放报名。 此次SHRM中文考试报名窗口的开启&#xff0c;对于国内众多渴望提升自我、拓宽职业发展道路的H…

React中使用usePrevious的意义是什么,为啥要用它

usePrevious钩子 export function usePrevious<T>(value: T): T | undefined {const ref useRef<T>();useEffect(() > {ref.current value;}, [value]);return ref.current; }注&#xff1a;更多好用的性能钩子网站推荐&#xff1a;https://react-hooks-libr…

【Linux】权限管理与相关指令

文章目录 1.权限、文件权限、用户文件权限的理解以及对应八进制数值表示、设置目录为粘滞位文件类型 2.权限相关的常用指令susudochmodchownchgrpumaskwhoamifile 1.权限、文件权限、用户 通过一定条件&#xff0c;拦住一部分人&#xff0c;给另一部分权利来访问资源&#xff0…

vue3源码(七)渲染原理-h()

1.定义 h函数是创建节点, 可实现展示template如何渲染到html中的过程&#xff0c;因为vue渲染到页面上是通过loader打包成模板字符串拼接渲染的&#xff0c;所以 h 函数同样也是通过字符串渲染到html中 h函数就是vue中的createElement方法&#xff0c;这个函数作用就是创建虚…

Python编程学习第一篇——Python零基础快速入门(六)(2)

上节讲了运算符,这节开始讲解Python的语法结构。前面一些章节我们对Python基础知识已经有了一些了解,包括Python数据类型、变量、语句、注释等等,也分享了一些可以运行小程序(小游戏),让大家在其中体会变量、语句、注释和数据类型等的运用。其中也涉及了一些语法结构,有…

PreparedStatement can have at most 65535 parameters

在 JDBC 中&#xff0c;由于内部实现的限制&#xff0c;PreparedStatement 能够接受的参数个数不能超过 65535 个 原因&#xff1a; PreparedStatement可以包含最多65,535个参数&#xff0c;‌这是因为PreparedStatement接口设计时&#xff0c;‌为了支持大量的参数化查询&am…

Windows 2012安装之实现远程连接

新建虚拟机 点击稍后安装操作系统 点击Microsoft Windows(W) 选择Windows Server 2012 设置虚拟机名称、安装位置 选择你的电脑核数 点击编辑虚拟机设置 点击CD/DVD(SATA) 使用ISO映像文件(M) 配置完之后点击确定 然后开启虚拟机 下一步&#xff1a; 点击现在安装&#xff1a…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(十二)-无人机群在物流中的应用

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

常用的点云预处理算法

点云预处理是处理点云数据时的重要部分&#xff0c;其目的是提高点云数据的质量和处理效率。通过去除离群点、减少点云密度和增强特征&#xff0c;可以消除噪声、减少计算量、提高算法的准确性和鲁棒性&#xff0c;从而为后续的点云处理和分析步骤&#xff08;如配准、分割和重…

【Git】执行git clone / checkout 命令出现 git Filename too long

执行 git clone / checkout 命令出现错误 git Filename too long 原因是因为目录中个别文件的文件名长度太长&#xff0c;超过了win文件名限制的260长度 解决方案 全局配置git git config --system core.longpaths true查看 git config --get core.longpaths设置完成后即可c…

Spring中的常用注解(一)

目录 RequestMapping PostMapping RequestBody Controller ResponseBody RestController Autowired Qualifier Primary Service Component Bean和Configuration ---------------- RequestMapping RequestMapping 是 Spring Framework 中用于配置 URL 映射的…