当前位置: 首页 > news >正文

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.lryc.cn/news/400774.html

相关文章:

  • 【AIGC】二、mac本地采用GPU启动keras运算
  • 【Qt】使用临时对象的坑
  • Apache-Flink未授权访问高危漏洞修复
  • Unable to obtain driver using Selenium Manager: Selenium Manager failed解决方案
  • (01)Unity使用在线AI大模型(使用百度千帆服务)
  • Zed 编辑器发布了原生 Linux 版本
  • 安全入门day01
  • 基于Adaboost的数据分类算法matlab仿真
  • 基于Java的斗地主游戏案例开发(做牌、洗牌、发牌、看牌
  • Ubuntu 22.04.4 LTS (linux) 安装certbot 免费ssl证书申请 letsencrypt
  • MT6825磁编码IC在智能双旋机器人中的应用
  • Datawhale 2024 年 AI 夏令营第二期——基于术语词典干预的机器翻译挑战赛
  • Qt 多窗体、复用窗口的使用
  • python 基础语法整理
  • 【Linux】常见指令(下)
  • jvm常用密令、jvm性能优化、jvm性能检测、Java jstat密令使用、Java自带工具、Java jmap使用
  • 实验三:图像的平滑滤波
  • VUE前端HTML静默打印(不弹出打印对话框)PDF简单方案
  • 大数据hive表和iceberg表格式
  • flutter 手写 TabBar
  • 一个引发openssl崩溃问题案例
  • 如何申请抖音本地生活服务商?3种方式优劣势分析!
  • 【项目-轻量级Web Server lock类】
  • 数据分析_计划
  • LDAPWordlistHarvester:基于LDAP数据的字典生成工具
  • dhtmlx-gantt甘特图数据展示
  • 《云原生安全攻防》-- 容器攻击案例:Docker容器逃逸
  • 初学者指南:如何搭建和配置 Nginx 服务器
  • [AHK] WinHttpRequest.5.1报错 0x80092004 找不到对象或属性
  • `speech_recognition` 是一个流行的库