mongoDB学习初步总结
What?
最受欢迎的非关系型数据库之一。面向文档的数据库,在存储乎数据方面与关系型数据库有着本质的区别。
Why?
简单易用
对多变的业务需求,适应性强于SQL型DB
性能
复制
索引
分片
丰富的查询
灵活的数据模型
毫不逊色的速度
海量数据下表现好
对程序员友好,但是是DBA的噩梦,维护性不佳
构成
相对于SQL数据库 行-> 表 -> 数据库 而言,mongoDB的组织结构是: document -> collection -> DataBase
其中的document , collection ,近似对应了SQL型数据库中 行 ,表 的概念。
Document
{ 'name' : 'tom' , 'age': 21 , 'email': 'tom@123.com' }
上例则是一个 document 对象。document使用 key:value (类似于JSON格式)的形式来组织数据的,document中有以下注意:
文档对 多个 key:value 的顺序敏感:例如:
{ 'name' : 'tom' , 'age': 21 , 'email': 'tom@123.com'
{ 'name' : 'tom' , 'email': 'tom@123.com','age': 21 }
上面两个文档会被认为是两个不同的文档。
系统会为每一个文档添加一个名为
_id
的键。这个键是系统对属于同一个colletion
的document
的唯一身份标识。
_id
的值是mongoDB 中的一种特殊的类型:ObjectID()
。
除非你在文档里给出了并指定了这个属性的值,否则mongoDB会在文档存入数据库的时候为其创建一个_id
键。key
- key 不能重复
- 文档的 key 为 string 类型
- 文档对 key 的大小写敏感
- value
- 文档中 value 的值可以为多种类型
- 值可以是一个文档(内嵌文档)
collection
- 相当于关系型数据库的 table
collection 是无模式的:也就是说,结构不同的 document 可以属于同一个collection,而这在关系型数据库是做不到的,正如你无法将结构不同的两行 放到同一张表中。
ok,既然我们可以将不同结构的document放到同一个collection中 ,为什么我们还需要多个collection呢?
实际上,我们应该将同一种类型的document 放到一个collection中,但是这并不意味着我们对数据(document)的结构由强烈的要求,mongoDB可以让我们更加灵活的管理数据。对文档分类意味着产生多个collection 这样也可以提高我们的访问速度,降低服务器的负担;同时还能让我们更好的组织和管理数据(mongoDB的DBA上辈子都是折翼的天使)。
mongoDB支持多种多样的数据类型,其主要的是对JSON 类型的数据可扩展,总结如下:
- null
- bool
- int32
- int64
- float64
- string
- 符号
- ObjectId()
- date
- 表示为从纪元开始的毫秒数
- 正则表达式
- javascript代码
- 二进制数据
- 最大值(BSON)
- 最小值(BSON)
- undefined
- array
- cocument
下一篇讲 mongoDB 的shell的基本用法。待续···
mongoDB学习初步总结的更多相关文章
- MongoDB学习笔记(2):数据库操作及CURD初步
MongoDB学习笔记(2):数据库操作及CURD 数据库操作 创建数据库 首先MongoDB中数据库的创建和数据库的切换都是使用命令,USE DATABASE,如果要切换的数据库不存在则会进行创建, ...
- MongoDB学习笔记—Linux下搭建MongoDB环境
1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...
- MongoDB学习笔记系列
回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...
- Mongodb学习笔记一(Mongodb环境配置)
Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...
- MongoDB学习记录
一.操作符 "$lt" :"<""$lte" :"<=""$gt" :"> ...
- PHP操作MongoDB学习笔记
<?php/*** PHP操作MongoDB学习笔记*///*************************//** 连接MongoDB数据库 **////*************** ...
- MongoDB学习:(二)MongoDB简单使用
MongoDB学习:(二)MongoDB简单使用 MongoDB使用: 执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面 >mongo 提示该错误,说明我们系统缺少一个补丁,该 ...
- MongoDB学习:(一)MongoDB安装
MongoDB学习:(一)MongoDB安装 MongoDB介绍: 直接百科了: MongoDB安装: 1:下载安装: MongoDB安装:https://www.mongodb.com/do ...
- MongoDB学习(四)客户端工具备份数据库
在上一篇MongoDB学习(三)中讲解了如何在服务器端进行数据的导入导出与备份恢复,本篇介绍下如何利用客户端工具来进行远程服务器的数据备份到本地. 以客户端工具MongoVUE为例来进行讲解: 1.首 ...
随机推荐
- 微信小程序一键生成源码 在线制作定制功能强大的微信小程序
微信小程序发展到现在,短短的一年不到的时间(很快就要迎来微信小程序周年庆),在快迎来周年庆之际,百牛信息技术bainiu.ltd特记录一下这个发展的历程,用于将来见证小程序发展的辉煌时刻,我们还能知道 ...
- Eclipse的maven工程不小心移除了Maven Dependencies,如何添加回来?
转自:https://blog.csdn.net/eininotop/article/details/71124533 选择该工程--> 点击右键--> 选择Properties--> ...
- FZU2277 Change(dfs序+树状数组)
传送门 题意 q次操作,操作有两种: 1 v x k:a[v]+=x,a[v']+=x-k(v'是v的子节点)... 2 v:查询\(a[v]mod(10^9+7)\) 分析 子节点增加的值为\(x+ ...
- HDU6031:Innumerable Ancestors(二分+倍增数组)
传送门 题意 n个点的图,有n-1条无向边,m个询问,每次询问 给出两个集合a和b,找到a的一个元素x,b的一个元素y,使得x和y的lca深度最大 分析 这道题如果直接暴力做,复杂度为O(mk1k2* ...
- 洛谷 P2296 寻找道路【bfs+spfa】
反向建边bfs出不能到t的点,然后对每个能到这些点的点打上del标记,然后spfa的时候不经过这些点即可 #include<iostream> #include<cstdio> ...
- .NET CORE之API日志收集
我们在构建WEBAPI项目时,通常需要构建一个全局的记录API 请求和返回 的功能,在WEBAPI框架下 我们通过自定义一个DelegateHandler来实现这个功能, 在.NET CORE框架下已 ...
- 最短路之Dijkstra(迪杰斯特拉)
一般用法: Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Dijkstra算法是很有代 ...
- Spring自动扫描注解类的冲突问题
原文地址:http://www.blogjava.net/crazycy/archive/2014/07/12/415738.html Spring MVC项目中通常会有二个配置文件,spring-s ...
- Spring Cache无效的问题以及解决办法
http://blog.csdn.net/kimylrong/article/details/50126979 @Cacheable标注的方法,如果其所在的类实现了某一个接口,那么该方法也必须出现在接 ...
- [LOJ6041雅礼集训2017]事情的相似度
题解 \(SAM+set\)启发式合并+扫描线 首先可以发现题目要求的就是查询结尾在一段区间内的\(LCS\) 这个显然就是\(SAM\)的\(parent\)树上的\(step[LCA]\) 我们可 ...