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 ...
随机推荐
- koa-session 记录当前会话内容
最近做毕设需要在nodejs服务器下记录当前用户账号,所用的node框架是koa,所以相对应配套的用了koa-session,发现和之前学的session差不多,都是会话级别的. 一.session和 ...
- 进程间通信(队列、管道)、消费者模型和进程池(apply,apply_async,map)
一.队列(先进先出) 进程间通信:IPC(Inter-Process Communication) 队列是使用管道和锁定实现,所以Queue是多进程安全的队列,使用Queue可以实现多进程之间的数据传 ...
- Django 路由系统
Django 路由系统 基本格式 from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] 参数说 ...
- python学习日记(isinstance和issubclass)
isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() isinstance(obj, Foo) issu ...
- 【CF1151F】Sonya and Informatics(动态规划,矩阵快速幂)
[CF1151F]Sonya and Informatics(动态规划,矩阵快速幂) 题面 CF 题解 考虑一个暴力\(dp\).假设有\(m\)个\(0\),\(n-m\)个\(1\).设\(f[i ...
- Tensor是神马?为什么还会Flow?
https://baijiahao.baidu.com/s?id=1568147583188426&wfr=spider&for=pc 也许你已经下载了TensorFlow,而且准备开 ...
- Vue, React, AngularJS, Angular2 我们对流行JavaScript框架们的选择
转自<奇舞周刊>,好文章mark一下 分割线 一个有趣的事实是:IBM发表的2017年最值得学习的编程语言名单中,JavaScript榜上有名.这位IT巨头指出,JS在网站中惊人地达到94 ...
- JS学习笔记Day16
一.匀速运动 保证速度不让用户提供,将速度写到函数中 speed = target-obj.offsetLeft>0 ? 正速度 :负速度 二.缓冲运动 var speed=(target-ob ...
- Redis扩展机制
Redis扩展机制扫盲 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于Redis的Avalibility解决方案有很多,比如Twemproxy,Codis, 一.Twempro ...
- mysql中常用的函数
-- 基本上都是抄的别人整理的 -- 一.数学函数 ABS(x) -- 返回x的绝对值 BIN(x) -- 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) -- 返回大于 ...