设为首页 收藏本站
查看: 986|回复: 0

[经验分享] 认识MongoDB

[复制链接]

尚未签到

发表于 2015-7-8 09:03:06 | 显示全部楼层 |阅读模式
   http://my.oschina.net/23102160/blog/101651
1.1 什么是MongoDB
  
  这个去官方网站看http://www.mongodb.org
1.2 什么是文档(Document)
  
  是多个键及其关联的值有序的放在一起就叫做文档,类似于关系型数据库里面的记录(行),通常表现形式就是键值:



view source
print?

1{"name":"Mongo"}

2{"name":"CC","type":"Beginer"}
  键/值对是在NOSQL非常重要的一个概念。(Redis也是键值对,不过操作方式有区别)
  CC:在这里面大小写是敏感的哦~
1.3 什么是集合(Collection)
  
  说简单一点集合就相当于SQL里面的表,在MongoDB里面就是指的一组文档。
  要查看当前数据库中的集合有两种方式:



view source
print?

1> show collections

2> show tables
  第二种完全是为了配合那些关系型数据库的童鞋。
1.4 数据库
  
  同理,多个集合组成就是数据库(感觉有点牵强)。数据库命名是有规则的,同样集合命名也有限制,数据库名满以下条件的UTF-8字符串都可以:
  尽量小写,不能是空字符串,不得含有一些特殊符号比如”’’”(空白)、”.”、”$”、”/”、”\”、”\0”等,这样的符号(这些符号主要是为了避免冲突,在系统的默认代码中有的会使用),还有就是最多64个字符。(主要数据库的名字最后会变成文件名,所以这也是限制一些字符的原因)
  还有一些就是系统保留了的名字,比如admin(一些特定的数据命令只能在这个库,这个库也是root数据库),local(这个主要是关于复制和本地数据库),config(主要用于保存分片信息)。
  这里有个概念叫命名空间,当然和C++在意义上也差不多,把数据库的名字放到集合的前面得到的就是命名空间,也称为集合的完全限定名。命名空间的长度不得超过121,一般100就可以了,这个是MongoDB的权威指南说的哦!
  默认链接test数据库,并将这个数据库连接复制给全局变量db,所以查看当前数据库用



view source
print?

1> db
  查看所有数据库名称用



view source
print?

1> show dbs
  选择其他数据库用



view source
print?

1> use databaseName
1.5  安装,启动MongoDB,运行shell
  
  安装得看你在什么平台上安装,CC是在CentOS下面装的,具体的安装文件就去官方网站看就行了,安装方法就不过多介绍了。
  启动MongoDB以Linux为例,(一般都是开机自启动的,毕竟是服务程序嘛),运行./mongod就行了,不过你得指定一些参数,比如数据库目录,权限,主从服务器什么的,具体的可以带上参数 –help 来查看。
  启动了服务之后,我们就可以真正的进入Shell来开始我们的工作了。
  CC注:进入shell后,可以用help来查看一些命令,如果记不住命令的全称,按下Tab来自动补全是一个不错的选择。
1.6 MongoDB中的基础数据类型
  
  本章最后说一说一些数据类型。(在以后的编辑中可能回来补充)
  数字和字符串这些都是常用的,对象id类似于主键,然后比较hot的就是数组和内嵌文档。
1.6.1 null
  
  这个很神奇的东西,在不同的数据库里面处理方式也不是一样,在后面遇上的时候会有具体介绍(目前CC知道的就是在查询或者修改时候的限定条件时候要注意)。



view source
print?

1{“name”:null}
1.6.2 布尔
  
  就是true和false了,(貌似在以前版本的时候只有1和0,不过现在都可以,这个注意一下比较好)



view source
print?

1{“yes”:true}
1.6.3 数字
  
  数字有三种:
  32位整数、64位整数这两种说有,不过不支持(JS只支持64位浮点数)
  64位浮点数,不论你的文档是下面的哪一种,



view source
print?

1{“number”:22.13}

2{“number”:213}
  本质上都是一种类型:64位浮点数
1.6.4 字符串
  
  就是UTF-8字符串类型的数据啦



view source
print?

1{“name”:”CC”}
1.6.5 符号
  
  又是一个不支持的,会自动转换成字符串。(这个用来干嘛CC也不知道。难道是+-/*?)
1.6.6 对象id
  
  初次接触MongoDB可能对这个感到奇怪,不过看多了你就知道,这个键值在每一个文档中都会存在,并且值都是唯一存在的。所以,简单的来说,这个就是集合里面每个文档的唯一标识。其使用12字节的存储空间,每个字节两位十六进制数字,是一个24位的字符串(其实可以自己设定其值,但是这样就不能保证唯一性了,所以,一般都是由系统自动增长)。12个字节分别由第 0-3 位时间戳,第4-6位机器码,第7-8位PID和第9-11位计数器组成,每一秒能生成16777216个不同的Objectid。(感觉很厉害的样子)
1.6.7 日期
  
  从纪元开始的毫秒数,一边调用new Date()后返回一个日期的字符串。



view source
print?

1{“time”:new Date()}
1.6.8 正则表达式
  
  文档里面可以包含正则表达式,这个就不多解释了。



view source
print?

1{“testregex”:/erbida/i}
1.6.9 代码
  
  文档中可以包含JS代码,代码对我们来说就是神器了,你懂的。
1.6.10 二进制数据
  
  又是一个不能用的,由字节串组成。
1.6.11 最大值和最小值
  
  不能用(CC不知道这个最大值最小值是什么意思,这个需要类型么?虽然在后面的$修改器里面有$max和$min,不过应该不是同一类吧)
1.6.12 未定义
  
  这个就是传说中的undefined,他和null在JS中是有区别的



view source
print?

1{“canon”:undefined}
1.6.13数组
  
  数组很好玩,可以做列表,队列和栈的一些操作,所以每次操作的时候得小心。数组可以包含一组值,类型可以不同,具体的先关操作在$修改器那会讲哟。



view source
print?

1{“test”:[“a”,”cc”,2]}
1.6.14 内嵌文档
  
  内嵌文档我们也叫做子文档,相信熟悉JSON的童鞋一定不会陌生,例如



view source
print?

1{“name”:

2 {

3      “first”:”Miku”,

4      “last”:”Hatsune”

5 }

6}
  这个类型是非常常用的哦!
  ----------------------------------华丽的分割线-----------------------------------------
  这一章主要是介绍理论知识,代码不多(CC苦逼的因为雾大堵在高速公路上写的,写完了,刚好通车了)。有很多的不足还请各位大神指教,也请正在学习的童鞋共同讨论下呗。
  回到家重新编辑了一下,在Word里面弄了下格式。
  编程神马的,要有爱才行!
  最后编辑日期:2013年1月11日晚

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-84361-1-1.html 上篇帖子: PHP-FPM模式下可怕的 MongoDB-PHP-Driver 连接池无节制连接问题 下篇帖子: Java的MongoDB驱动及读写策略
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表