您的位置:首页 > 数据库 > Mongodb

MongoDB权威指南笔记 2 Mongodb入门

2013-03-28 21:55 155 查看
Mongodb的基本概念

1.文档是Mongodb中数据的基本单元,非常类似于关系数据库管理系统中的行(但是比行要复杂得多)。

2.类似地,集合可以被看做是没有模式的表。

3.Mongodb的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限。

4.Mongodb自带简洁但功能强大的Javascript Shell,这个工具对于管理Mongodb实例和操作数据作用非常大。

5.每一个文档都有一个特殊的键"_id",它在文档所处的集合中是唯一的。

文档中键的和值的说明

1.文档的键是字符串。除了少数例外情况,键可以使用任意的UTF-8字符。

2.键中不能含有\0(空字符),这个字符用来表示键的结尾。

3.'.'和'$'有特别的意义,一般不使用。

4.以下划线"_"开头的键是保留的。

5.Mongodb不但区分类型也区分大小写。

6.Mongodb的文档中不能有重复的键。

集合

集合就是一组文档。如果说mongodb中文档类似于关系数据库中的行,那么集合就如果表。

Mongodb的数据库命名应该全是小写。注意:数据库名最终会变成文件系统里面的文件。
有一些数据库是保留的,可以直接访问这些有特殊作用的数据库。

admin数据库:这是root用户数据库,如果将一个用户添加到此数据库中,这个用户默认继承所有数据库的权限。

local数据库:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任何集合。

config数据库:当mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

Mongodb默认运行的端口号是 27017,如果通过http访问,则只需要在默认端口上加1000即可,即localhost:28017

Mongodb可以使用任何的javascript函数库,比如Math.ceil()等

选择数据库:use xiaozhe .

查看当前数据库:db

Mongodb Shell的基本操作

在shell中操作数据会用到4个基本操作:创建,读取,更新和删除。
1.创建

insert函数添加一个文档到集合里面。假如创建一篇博客文章,首先创建一个局部变量post,内容是代表文档的javascript对象。如:

>post={'title':'my blog title', 'content':'my blog content', 'date':new Date()}

然后把用insert方法把这个文档插入到blog集合中 >db.blog.insert(post)

查看是否插进了集合中:>db.blog.find()

2.读取

find会返回集合里面所有的文档。若只是查看一个文档,可以用findone方法。

>db.blog.findOne()

3.更新

更新使用update。Update接受2个参数,第一个是要更新文档的限定条件,第二个是新的文档。假设我们想给前面的post文档新增一个comment键,>post.comment=[],然后执行update更新一个标题>db.blog.update{'title':'my blog new title',post}.

现在我们用find查看一下就会出现更新了。

4.删除

db.blog.remove()可以接受一个文档为参数,用来删除指定的数据行,如果不加参数,则视为删除所有数据。

使用Shell的窍门

由于mongo是一个javascript shell,所以我们可以通过输入 help 查看帮助。

有个了解函数功用的技巧,就是在输入函数的时候不加括号,则会显示出该函数的源码,如:db.blog.update

蹩脚的集合名,当用户的集合是Mongodb属性时,例如集合是version,则用db.version会返回当前的版本号。此时我们应该:db.getCollection("version") 这样写。

基本数据类型

1.数字,mongodb支持三种类型,34位和64位整形,64位浮点

2.日期,在mongodb中调用javascript的Date对象作为日期

3.数组,mongodb能理解其结构并能深入操作

4.内嵌文档,就是把整个mongodb的文档作为另一个文档中一个键的值,同数组一样,mongodb能很好的操作其结构

5._id和ObjectId,ObjectId是_id的默认类型,是全局唯一的。

ObjectId,是由12字节,每个字节是2位十六进制数字,总共是一个24位的字符串。

其中0-3字节是时间戳(单位秒),4-6字节是主机名散列值,7-8字节是PID(进程标识符,确保每个进程的ObjectId不同),9-11字节是计数器(确保同一进程的同一秒产生的ObjectId不同,最大值256的3次方)。

_id可以由Mongodb服务器来完成,但是一般会在客户端由驱动程序完成,因为在客户端完成可以减少服务器的开销,将事务交给客户端来做,就减轻了数据库扩展的负担。并且在客户端生产的ObjectId,驱动程序能提供更加丰富的,由自己扩展的API。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: