《MongoDB权威指南》之MongoDB初探

MongoDB是一种强大、灵活、可扩展的数据存储方式。它扩展了关系型数据库的众多有用功能,如辅助索引、范围查询(range query)和排序。MongoDB的功能非常丰富,比如内置的对MapReduce式聚合支持,以及对地理空间索引的支持。

《MongoDB权威指南》之MongoDB初探

基本概念

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

类似低,集合可以被看做是没有模式的表

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

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

每一个文档都有一个特殊的建_id,它在文档所处的集合中是唯一的

1、文档

文档的建是字符串。

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

.和$有特别的意义,只有在特定环境下才能使用。

以下划线‘_’开头的键是保留的。

MongoDB不但区分类型,也区分大小写

类型:
 {'foo':3}
 {'foo': '3'}
大小写:
 {'foo':3}
 {'FOO':3}

不能有重复的键

如下文档是非法的:

{'a':'Hello', 'a':'Word'}
2、集合

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

2.1、无模式

集合是无模式的,

2.2、命名

集合名不能是空字符串''。
集合名不能含有\0(空字符)
集合名不能以‘system.’开头,装饰为系统集合保留的前缀
用户创建的集合名不能含有保留字符$

2.3、数据库

多个集合组成数据库
数据库名命名规则:
不能是空字符串('')
不能含有''(空格)、.、$、/、\和\0.
应全部小写
最多64字节

2.4、启动mongodb

Windows下启动:

$ mongod.exe

2.5 MongoDB Shell

2.5.1、运行shell

$./mongo

shell可以利用javaScript标准库

可以定义调用javaScript函数

2.5.3、shell中的基本操作

4个基本操作:创建、读取、更新和删除(CRUD)

1、创建

insert 函数添加一个文档到集合里面

post = {
    title:'test',
    content:'test context',
    date:new Date()
}
db.blog.insert(post)

2、读取

db.blog.find()返回所有的文档
db.blog.findOne()查看一个文档

3、更新

update 接收(至少)两个参数

第一个是要更新文档的限定条件,

第二个是新的文档

post.comments = []
db.blog.update({title:222}, post)

4、删除

remove用来从数据库中永久的删除文档

bd.blog.remove({title:'test'})

2.6、数据类型

2.6.1、基本数据类型

a、null

用于表示空值或者不存在的字段

{'x':null}

b、布尔

布尔类型有两个值'true'和'false':

{'x':true}

c、32位整数

shell中不可用, javaScript仅支持64位浮点数, 所以32位整数会被自动转换

d、64位整数

shell也不支持该类型。shell会使用一个特殊的内嵌文档来显示64位整数

e、64位浮点数

shell中的数字都是这个类型

{'X':3.15}
{'X':3}

都是浮点数

f、字符串

utf-8字符串都可表示为字符串类型的数据:

{'x':'foobar'}

g、符号:

shell不支持该类型,shell将数据库里面的符号类型转成字符串

h、对象id:

对象id是文档的唯一id

{'x':objectId()}

i、日期:

日期类型存储的是从标准纪元开始的毫秒数。不存储时区:

{'x':new Date()}

j、正则表达式:

文档中可以包含正则表达式,采用javaScript的正则表达式语法

{'x':/foovar/i}

k、代码:

文档中还可以包含javaScript代码:

{'X':function(){/*....*/}}

l、二进制数据:

二进制数据可以由任意字节的串组成,不过shell中无法使用

m、最大值:

BSON包含一个特殊类型。表示可能的最大值,shell中没有这个类型

n、最小值:

BSON包含一个特殊类型,表示可能的最下值,shell中没有这个类型

o、未定义:

文档中也可以使用未定义类型(javaScript中的null和undefined是不同的类型)

{'x':undefined}

p、数组:

值的集合或者列表可以表示成数组

{'x':['a','b','c']}

q、内嵌文档:

文档可以包含别的文档,也可以作为值嵌入到父文档中

{'x':{'foo':'bar'}}

该内容由阅读《MongoDB权威指南》整理。

上一篇:Python基础整理之if、while、for 下一篇:PHP防止sql注入,XSS攻击简单方法

评论

评论(0)

暂无评论