2.5.1 MongoDB -- 介绍

  • mysql vs mongo
  • 快速开始

mysql vs mongo

对比 mysql mongo
数据存储 table 二维表结构,需要预先定义结构 json 类文档,不需要预先定义结构。可随意新增或删除字段,新增字段不会对已存在的字段产生影响
查询语法 sql (structured query language) mongo
索引 如果不定义索引,则进行全表扫描 如果不定义索引,则进行全表扫描
集群 支持主从复制 内置副本集、分片、和自动选举
场景 关系型结构,在多行插入时需要事务保障 实时数据分析、内容管理、iot设备、移动设备(事务需要有内置副本才可以做)
数据结构 结构化、数据 schema 定义清晰 未知数据结构类型
风险 sql 注入攻击 相对来说风险更低
分析 确实需要关系型数据库来保障 写入并发高,没有 DBA

快速开始

安装 mongo in docker

docker run -it --volume=/root/docker/mongo01/data:/data/db -p 27017:27017 --name mongo01 -d mongo

robt 3t 下载地址:

https://download.studio3t.com/robomongo/windows/robo3t-1.4.2-windows-x86_64-8650949.exe

新增数据库books,新增集合author

增删改查

// 插入
db.author.insertOne({"name":"mingson", "age":25})
db.author.insertOne({"name":"jesse", "age":18})
db.author.insertOne({"name":"bobo", "age":18}) // 查询
db.getCollection('author').find({"name":"mingson"})
db.getCollection('author').find({"name":{$eq:"mingson"}}) // 更新
db.author.updateOne({"name":"mingson"},{$set:{"age":20}}) // 删除
db.author.deleteOne({"name":"bobo"}) // 返回字段,1返回,0不返回
db.getCollection('author').find({"name":"mingson"},{"name":1,"_id":0})

2.5.2 MongoDB -- 基础

mongo db 文档:

https://docs.mongodb.com/manual/introduction/

中文 mongo db 手册:

https://mongoing.com/docs/tutorial/insert-documents.html

数据库/集合/文档

database/collection/document

mongo mysql
database database
collection table
document row
filed column

数据库

  • 数据库的名称是大小写敏感
不能包含以下字符(win):/\."$*<>:|?
不能包含以下字符(unix/linux):/\."$
  • 不能超过64个字符

集合

  • 不能包含$
  • 不能为空,不能包含null
  • 不能以system.开头

字段名

  • 不能为空,不能包含null
  • 顶级字段不能以$开头
  • _id是保留字段名称

BosnTypes

https://mongoing.com/docs/reference/bson-types.html

string string
bool Boolean
int int
long long
decimal decimal
double double
date date
timestamp timestamp
null null
  • object
  • array
  • objectid
  • regex
  • javascripe

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

如有任何疑问,请与我联系 (MingsonZheng@outlook.com) 。

.NET 云原生架构师训练营(模块二 基础巩固 MongoDB 介绍和基础)--学习笔记的更多相关文章

  1. .NET 云原生架构师训练营(权限系统 代码实现 Store.EntityFramework)--学习笔记

    目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Secu ...

  2. .NET 云原生架构师训练营(模块一 架构师与云原生)--学习笔记

    目录 什么是软件架构 软件架构的基本思路 单体向分布式演进.云原生.技术中台 1.1 什么是软件架构 1.1.1 什么是架构? Software architecture = {Elements, F ...

  3. .NET 云原生架构师训练营(建立系统观)--学习笔记

    目录 目标 ASP .NET Core 什么是系统 什么是系统思维 系统分解 什么是复杂系统 作业 目标 通过整体定义去认识系统 通过分解去简化对系统的认识 ASP .NET Core ASP .NE ...

  4. .NET 云原生架构师训练营(权限系统 RGCA 架构设计)--学习笔记

    目录 项目核心内容 实战目标 RGCA 四步架构法 项目核心内容 无代码埋点实现对所有 API Action 访问控制管理 对 EF Core 实体新增.删除.字段级读写控制管理 与 Identity ...

  5. .NET 云原生架构师训练营(模块二 基础巩固 敏捷开发)--学习笔记

    2.7.1 敏捷开发 敏捷介绍 敏捷的起源 敏捷软件开发宣言 敏捷开发十二原则 生命周期对比 敏捷开发的特点 敏捷的发展 敏捷的核心 敏捷的起源 2001年,17个老头子在一起一边滑雪,一边讨论工作, ...

  6. .NET 云原生架构师训练营(模块二 基础巩固 MongoDB 问答系统)--学习笔记

    2.5.6 MongoDB -- 问答系统 MongoDB 数据库设计 API 实现概述 MongoDB 数据库设计 设计优化 内嵌(mongo)还是引用(mysql) 数据一致性 范式:将数据分散到 ...

  7. .NET 云原生架构师训练营(模块二 基础巩固 Scrum 团队)--学习笔记

    2.7.3 Scrum 团队 理想的环境 团队章程 如何组建 Scrum 团队 产品待办事项列表 用户故事 敏捷开发流程 理想的环境 5-9人 100% 跨职能 在一起 自组织 自组织 目标 授权 沟 ...

  8. .NET 云原生架构师训练营(模块二 基础巩固 EF Core 更新和迁移)--学习笔记

    2.4.6 EF Core -- 更新 状态 自动变更检测 不查询删除和更新 并发 状态 Entity State Property State Entity State Added 添加 Uncha ...

  9. .NET 云原生架构师训练营(模块二 基础巩固 MongoDB 写入和查询)--学习笔记

    2.5.3 MongoDB -- 写入和查询 写入 查询 查找操作符 逻辑操作符 其他 嵌套对象 数组 游标方法 写入 https://docs.mongodb.com/manual/tutorial ...

随机推荐

  1. 第11.15节 Python正则表达式转义符定义的特殊序列

    一. 引言 在前面<第11.13节 Python正则表达式的转义符"\"功能介绍>介绍了正则表达式转义符'\',只不过当时作为转义符主要是用于在正则表达式中表示元字符自 ...

  2. PyQt学习随笔:QtDesigner ListView控件列表项的初始化

    在QtDesigner中设计的界面中添加ListView控件后,是没办法添加需要在ListView控件中显示的列表项.由于ListView控件只是一个展示列表项的视图控件,实现了界面与数据的分离,其要 ...

  3. Jmeter录制脚本-BadBoy

    录制脚本方式: 1)Badboy录制Jmter脚本 2)Jmter代理服务录制脚本 方式一:Badboy录制脚本 安装Badboy 录制脚本 1.双击Badboy 2.输入URL 3.点击" ...

  4. REHの个人主页

    朝暮与年岁并往 然后与你一同行至天光. 简介 这是怎么做到的啊-- 把那些迷茫的浑浊的不可预知的,裁剪,变化,像个造物主一样,最终成为混沌而又分明的,除去一身的戾气和险恶,把那些复杂和晦涩都剖析成它精 ...

  5. 【eJOI2020】考试(dp & 树状数组优化)

    Description \(n\) 个正整数排成一列,每个位置 \(i\) 有一个初始值 \(A_i\) 以及目标值 \(B_i\). 一次操作可以选定一个区间 \([l, r]\),并将区间内所有数 ...

  6. Linux下查看目录文件大小

    1.ls -lht 查看当前目录下文件的大小 2.du -sh 查看当前文件夹的大小

  7. 【Cesium 颜狗初步】fabric 材质定义与自定义着色器实践

    fabric 材质定义:着色器实践 1. 示例代码 贴到沙盒里就可以运行: var viewer = new Cesium.Viewer("cesiumContainer"); v ...

  8. Flink连接器-批处理-读写Hbase

    Flink批处理与hbase的读写 source-hbase 父类 是模仿官方写的. import org.apache.flink.api.common.io.LocatableInputSplit ...

  9. disable_functions Bypass

    参考文章和poc(文中均有poc下载地址) : https://www.uedbox.com/post/59295/ https://www.uedbox.com/post/59402/ 当然 fre ...

  10. Vue 打包部署上线

    1,VUE逻辑编写完成后在当前项目下打包 npm run build 需要注意的是,当打包完毕后,需要将入口的index.html的项目dist路径改成相对路径 另外需要注意的一点是,一旦打包vue. ...