MongoDB是文档型数据库,不是关系型数据库。基本思路是 将原来的“行” 的概念换成更加灵活的 “文档“模型。面向文档的方式可以将文档或者数组内嵌进来,所以用一条记录就可以表达复杂的方式。一般作为网络服务器。

MongoDB没有模式:文档的键不会事先定义,也不会固定不变。

MongoDB比较容易扩展。需要扩展的时候,只需在集群中增加机器即可,然后让数据库来做剩下的事情。

MongoDB拥有一套独特的,好用的工具:

1,索引。通过辅助索引,可以更快的进行查询。也提供唯一的,复合的和地理空间索引能力。

2,存储JavaScript。可以直接在服务端存储函数和值。

3,聚合。 支持MapReduce工具和其他聚合工具。

4,固定集合。集合的大小是有上限的。

5,文件存储。支持一种容易使用的协议存储大型文件和文件的元数据。

但是也有缺点:比如 联合的 join 和复杂的多行事务。

尽管MongoDB功能很强大,但是并不具备关系型数据库的功能。它尽可能将服务端的逻辑交给客户端(由驱动程序或用户的应用程序处理),这样可以使得MongoDB拥有量良好的性能。

 MongoDB启动后,几乎没有什么必要的操作,如果主服务器挂掉了,会自动切换到备份服务器上。并且将备份服务器升为活跃服务器。

 文档时MongoDB的核心。多个键以及关联的值有序的放置在一起就是文档。文档中的值不仅是字符串,还有其他的类型。

注意:值不能包含\0.因为这个字符是用来表示键的结尾的。2. 点.和$最好不要使用3 ,同样_最好也不要。系统的默认的一些键比如:_index就是用这个开头的。

MongoDB不但区分类型,也区分大小写。文档中不允许有重复的键。

集合就是一组文档。如果说mongodb中的文档类似关系型数据库中的行,那个集合就是一张表。集合是无模式的,这就意味着集合里的文档类型也是各式各样的。

如: {“firest”: "hello" } {"seconde": 5 }.他们的类型不同,键也不同。集合包含子集合。一般用. 表示。比如: blog.content 和blog.authors。

 

MongoDB自带一个Javascript Shell,可以从命令行与mongodb进行交互。通过它可以执行管理操作,检查运行实例。这个工具很重要。shell是标准的javascript解释器。shell在启动时会自动连接MongoDB服务器,所以在确保首先启动服务器,然后在运行shell。它是一个独立的MongoDB客户端。SHELL还有一些非javascript的语法扩展。是为了方便习惯sql shell 的用户。

1,创建

首先创建一个局部变量和相关内容。post ={"title":"my blog" ,"content":"here is my blog","date": new date()}

插入数据: db.blog.indert(post). 在记录被保存后,会自动多出一列“_id"。

2,读取

find会返回集合中所有的文档。若只想看一个,可也用findone: db.blog.findone(). 这两者都可以接受查询的限制条件。

3,更新

update.  他接受至少两个参数。 例如:修改post变量,增加"comments“键

第一步:post.comments=[]

然后执行update操作。db.blog.update({title:"my blog",post}).用新版本的文档,替换标题为my blog文档。

4,删除

remove. 它可以接受参数。永久删除数据。db.blog.remove({"title":"my blog"}).如果不加参数,则删除集合内所有文档。

如果查看数据库级的帮助,可以用db.help(). 有个了解函数的技巧,就是输入的时候不要输入括号,这样就能看到该函数的javascript函数实现方式。