MongoDB超级简明入门教程
1.概念篇
MongoDB和MySQL分别作为非关系型数据库和关系型数据库的代表,通过它们之间的对比可以很快的建立起对MongoDB的认知。
| MongoDB | MySQL |
|---|---|
| 数据库(Database) | 数据库(Database) |
| 集合(Collection) | 表(Table) |
| 文档(Document) | 记录(record) |
对于关系型数据库,一般来说,我们可以简单的理解为:一个数据库管理应用,可以创建多个数据库(databases),每个数据库可以管理很多个表(tables),表中存储的就是可以CURD的记录(records),这种管理层级同样可以映射到MongoDB上。
与MySQL不同的是,MongoDB的数据具有灵活的模式 。集合本身没有对文档结构的规则性校验,而表的设计从一开始就约束死了记录该包含的字段名。
需要注意的是,MongoDB作为非关系型数据库,不是说其我们使用时不能设计成关系型的结构,我们同样可以人为地约束(document)文档结构包含的数据的类型,(与MySQl不同的是,MongoDB的文档支持数组和对象、子文档等复杂的数据结构)同样文档之间也可以设计成类似ER图的关系模型。
下面是官网提供的一个书籍分类树形结构数据建模的例子

传统的关系型数据库的设计思想是把每个节点当做一个记录,每个节点保存其父节点的_id.
| _id | parent |
|---|---|
| MongoDB | Databases |
| dbm | Databases |
| Databases | Programming |
| Languages | Programming |
| Programming | Books |
| Books | null |
这种关系也可以使用MongoDB存储
db.categories.insert( { _id: "MongoDB", parent: "Databases" } )
db.categories.insert( { _id: "dbm", parent: "Databases" } )
db.categories.insert( { _id: "Databases", parent: "Programming" } )
db.categories.insert( { _id: "Languages", parent: "Programming" } )
db.categories.insert( { _id: "Programming", parent: "Books" } )
db.categories.insert( { _id: "Books", parent: null } )
其他几种树形结构的建模方法请参考
Model Tree Structures
Modeling a Tree in a Document Database
2.快速操作篇
- 下载安装客户端
https://docs.mongodb.com/manual/administration/install-community/ 开启MongoDB服务
(1)创建数据库存储目录mkdir -p ~/yourdir/db
确保当前用户拥有该目录的读写权限
(2)开启服务mongod --dbpath <path to data directory>
再此之前确保mongod命令路径已经加入到了系统环境变量
使用mongo shell 操作数据库
(1)连接到数据库,开启命令模式mongo --host 127.0.0.1:27017
如果使用默认参数,后面的参数可以省略
(2)显示目前操作的数据库db
(3)切换数据库
use <database>
当第一次存储数据到数据库时,MongoDB会自动创建数据库及集合
use myNewDatabase
db.myCollection.insertOne( { x: 1 } );
上面的
insertOne语句会自动创建myNewDatabase数据库,与myCollection集合。
3.MongoDB 增删改查 操作
- 增
db.collection.insertOne()
db.collection.insertMany()
- 删
db.collection.deleteOne()
db.collection.deleteMany()
- 改
db.collection.updateOne()
db.collection.updateMany()
db.collection.replaceOne()
- 查
db.collection.find()
MongoDB超级简明入门教程的更多相关文章
- OsharpNS轻量级.net core快速开发框架简明入门教程-从零开始启动Osharp
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
- OsharpNS轻量级.net core快速开发框架简明入门教程-Osharp.Redis使用
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
- OsharpNS轻量级.net core快速开发框架简明入门教程-代码生成器的使用
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
- OsharpNS轻量级.net core快速开发框架简明入门教程-基于Osharp实现自己的业务功能
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
- OsharpNS轻量级.net core快速开发框架简明入门教程-Osharp.Hangfire使用
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
- Mongodb最基础入门教程
Mongodb最基础入门教程 如果想了解一下redis的入门教程,可以去看一下我的上一篇博客 Mongodb的安装大家可以参考一下其他博主的博客,这里我就不做介绍了.不过值得注意的是,在Linux ...
- OsharpNS轻量级.net core快速开发框架简明入门教程-Osharp.Permissions使用
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
- OsharpNS轻量级.net core快速开发框架简明入门教程-切换数据库(从SqlServer改为MySql)
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
- OsharpNS轻量级.net core快速开发框架简明入门教程-多上下文配置(多个数据库的使用)
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
随机推荐
- MongoDB和pymongo的CURD
一.mongodb 1.介绍 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之 ...
- Spring MVC 使用介绍(五)—— 注解式控制器(一):基本介绍
一.hello world 相对于基于Controller接口的方式,基于注解方式的配置步骤如下: HandlerMapping 与HandlerAdapter 分别配置为RequestMapping ...
- BZOJ2527[Poi2011]Meteors——整体二分+树状数组
题目描述 Byteotian Interstellar Union (BIU) has recently discovered a new planet in a nearby galaxy. The ...
- SpringMVC中使用Interceptor拦截器顺序
一.简介 SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验 证,或者是来判断用户是否登陆,或者是像1 ...
- [SHOI2008]仙人掌图 II——树形dp与环形处理
题意: 给定一个仙人掌,边权为1 距离定义为两个点之间的最短路径 直径定义为距离最远的两个点的距离 求仙人掌直径 题解: 类比树形dp求直径. f[i]表示i向下最多多长 处理链的话,直接dp即可. ...
- Vue+koa2开发一款全栈小程序(6.个人中心)
1.用户信息的获取和展示 1.初始化数据库 cd到server目录下,执行 node tools/initdb.js 登录mysql控制界面,查看初始化以后生成的表 show databases; u ...
- Python并发编程之IO模型
目录 IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) IO多路复用 异步IO IO模型比较分析 selectors模块 一.IO模型介绍 Stevens ...
- 第五节:WebApi的三大过滤器
一. 基本说明 1. 简介: WebApi下的过滤器和MVC下的过滤器有一些区别,首先我们要注意的是通常建WebApi项目时,会自动把MVC的程序集也引入进来,所以我们在使用WebApi下的过滤器的 ...
- 第七节:利用CancellationTokenSource实现任务取消和利用CancellationToken类检测取消异常。
一. 传统的线程取消 所谓的线程取消,就是线程正在执行的过程中取消线程任务. 传统的线程取消,是通过一个变量来控制,但是这种方式,在release模式下,被优化从cpu高速缓存中读取,而不是从内存中读 ...
- mysql常见的问题
1.为什么选择某一个版本 各个版本之间的区别及优缺点 首先,服务器特性 mysql percona mysql mariaDB 开源 开源 开源 支持分区表 支持分区表 支持分区表 innodb Xt ...