zoukankan      html  css  js  c++  java
  • 认识MongoDB

     http://my.oschina.net/23102160/blog/101651

    1.1 什么是MongoDB

     

    这个去官方网站看http://www.mongodb.org

    1.2 什么是文档(Document)

     

    是多个键及其关联的值有序的放在一起就叫做文档,类似于关系型数据库里面的记录(行),通常表现形式就是键值:

    1 {"name":"Mongo"}
    2 {"name":"CC","type":"Beginer"}

    键/值对是在NOSQL非常重要的一个概念。(Redis也是键值对,不过操作方式有区别)

    CC:在这里面大小写是敏感的哦~

    1.3 什么是集合(Collection)

     

    说简单一点集合就相当于SQL里面的表,在MongoDB里面就是指的一组文档。

    要查看当前数据库中的集合有两种方式:

    1 > show collections
    2 > show tables

    第二种完全是为了配合那些关系型数据库的童鞋。

    1.4 数据库

    同理,多个集合组成就是数据库(感觉有点牵强)。数据库命名是有规则的,同样集合命名也有限制,数据库名满以下条件的UTF-8字符串都可以:

    尽量小写,不能是空字符串,不得含有一些特殊符号比如”’’”(空白)、”.”、”$”、”/”、”\”、”\0”等,这样的符号(这些符号主要是为了避免冲突,在系统的默认代码中有的会使用),还有就是最多64个字符。(主要数据库的名字最后会变成文件名,所以这也是限制一些字符的原因)

    还有一些就是系统保留了的名字,比如admin(一些特定的数据命令只能在这个库,这个库也是root数据库),local(这个主要是关于复制和本地数据库),config(主要用于保存分片信息)。

    这里有个概念叫命名空间,当然和C++在意义上也差不多,把数据库的名字放到集合的前面得到的就是命名空间,也称为集合的完全限定名。命名空间的长度不得超过121,一般100就可以了,这个是MongoDB的权威指南说的哦!

    默认链接test数据库,并将这个数据库连接复制给全局变量db,所以查看当前数据库用

    1 > db

    查看所有数据库名称用

    1 > show dbs

    选择其他数据库用

    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知道的就是在查询或者修改时候的限定条件时候要注意)。

    1 {“name”:null}

    1.6.2 布尔

    就是true和false了,(貌似在以前版本的时候只有1和0,不过现在都可以,这个注意一下比较好)

    1 {“yes”:true}

    1.6.3 数字

    数字有三种:

    32位整数、64位整数这两种说有,不过不支持(JS只支持64位浮点数)

    64位浮点数,不论你的文档是下面的哪一种,

    1 {“number”:22.13}
    2 {“number”:213}

    本质上都是一种类型:64位浮点数

    1.6.4 字符串

    就是UTF-8字符串类型的数据啦

    1 {“name”:”CC”}

    1.6.5 符号

    又是一个不支持的,会自动转换成字符串。(这个用来干嘛CC也不知道。难道是+-/*?)

    1.6.6 对象id

     

    初次接触MongoDB可能对这个感到奇怪,不过看多了你就知道,这个键值在每一个文档中都会存在,并且值都是唯一存在的。所以,简单的来说,这个就是集合里面每个文档的唯一标识。其使用12字节的存储空间,每个字节两位十六进制数字,是一个24位的字符串(其实可以自己设定其值,但是这样就不能保证唯一性了,所以,一般都是由系统自动增长)12个字节分别由第 0-3 位时间戳,第4-6位机器码,第7-8PID和第9-11位计数器组成,每一秒能生成16777216个不同的Objectid。(感觉很厉害的样子)

    1.6.7 日期

    从纪元开始的毫秒数,一边调用new Date()后返回一个日期的字符串。

    1 {“time”:new Date()}

    1.6.8 正则表达式

    文档里面可以包含正则表达式,这个就不多解释了。

    1 {“testregex”:/erbida/i}

    1.6.9 代码

    文档中可以包含JS代码,代码对我们来说就是神器了,你懂的。

    1.6.10 二进制数据

    又是一个不能用的,由字节串组成。

    1.6.11 最大值和最小值

    不能用(CC不知道这个最大值最小值是什么意思,这个需要类型么?虽然在后面的$修改器里面有$max和$min,不过应该不是同一类吧)

    1.6.12 未定义

    这个就是传说中的undefined,他和null在JS中是有区别的

    1 {“canon”:undefined}

    1.6.13数组

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

    1 {“test”:[“a”,”cc”,2]}

    1.6.14 内嵌文档

    内嵌文档我们也叫做子文档,相信熟悉JSON的童鞋一定不会陌生,例如

    1 {“name”:
    2  {
    3       “first”:”Miku”,
    4       “last”:”Hatsune”
    5  }
    6 }

    这个类型是非常常用的哦!

    ----------------------------------华丽的分割线-----------------------------------------

    这一章主要是介绍理论知识,代码不多(CC苦逼的因为雾大堵在高速公路上写的,写完了,刚好通车了)。有很多的不足还请各位大神指教,也请正在学习的童鞋共同讨论下呗。

    回到家重新编辑了一下,在Word里面弄了下格式。

    编程神马的,要有爱才行!

    最后编辑日期:2013年1月11日晚

  • 相关阅读:
    八数码
    java swing打包为exe
    java swing 打为exe
    Intellij Idea开发: 手把手教你Java GUI开发,并且打包成可执行Jar程序
    HSSFworkbook,XSSFworkbook,SXSSFworkbook区别总结
    java poi修改EXCEL单元格的内容
    java 操作excel类型转换
    css截取过长文本,省略号显示
    idea swing 设置为utf8乱码
    Java使用POI读取和写入Excel指南
  • 原文地址:https://www.cnblogs.com/CBDoctor/p/2932991.html
Copyright © 2011-2022 走看看