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函数实现方式。