什么是mongodb
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和 非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
mongodb的几大优势
MongoDB是面向文档的数据库,不是关系型数据库。
1、MongoDB有丰富的数据模型,基本的思路就是将原来“行”的概念换成更加灵活的“文档”模型。一条记录可以表示非常复杂的层次关系。
2、非常容易扩展。面对数据量的不断上涨,通常有两种方案,一种是购买更好的硬件,别一种是分散数据,进行分布式的扩展,前者有着非常大的缺点,因为硬件通常是有物理极限的,当达到极限以后,处理能力就不可能再进行扩展了。所以建议的方式是使用集群进行扩展。MongoDB所采用的面向文档的数据模型使其可以自动在多台服务器之间分割数据。它还可以平衡集群的数据和负载,自动重排文档。
3、丰富的功能。包括索引、存储JavaScript、聚合、固定集合、文件存储等。
4、卓越的性能。
5、方便的管理,除了启动数据库服务器之外,几乎没有什么必要的管理操作。管理集群只需要知道有新增加的节点,就会自动集成和配置新节点。
mongodb的几个基本概念
文档
文档是MongoDB中数据的基本单元,非常类似于关系数据库管理系统中的行。
文档是MongoDB的核心概念。多个键及其关联的值有序地放置在一起便是文档。
MongoDB以类JSON的格式来表示文档,例如:
{"greeting":"hello mongodb!"}
以键值形式存储,值可以是不同的类型,比如字符串,整型等。
集合
集合就是一组文档。类似于关系型数据库中的表。
我们可以使用任意的UTF-8字符串来命名集合。
为了使组织结构更好些,我们可以使用子集合。组织集合的一种惯例是使用“.”字符分开的按命名空间划分的子集合。
数据库
MongoDB中多个文档组成集合,同样多个集合可以组成数据库。一个MongoDB实例可以承载多个数据库,它们之间可视为完全独立的。
数据库名可以是任意UTF-8字符串。
除了一些规则外,有一些数据库名是保留的,不能作为数据库名,包括“admin”、“local”、"config"。
32位win7下用虚机安装64位ubuntu
如果是32位的ubuntu安装起来很顺利没什么问题,但是到了安装64位ubuntu的时候出问题了。
报错如下:
This kernel requires an x86-64 CPU, but only detected an i686 CPU.
Unable to boot - please use a kernel appropriate for your CPU.
解决办法:
先下载一个cpu-z,我下载的地址是
http://www.xiazaiba.com/html/160.html
打开并且查看一下
如果显示支持64位那么就应该是bios里边没有进行设置的原因了,重启电脑进入bios
找到 CPU ==> Intel(R) Virtualization Technology ==> 设置为 Enabled
注意:这之后要冷启动才能生效。
然后进行系统重新安装,一切正常。
启动mongodb
首先是下载和安装,下载就到mongodb的官方网站上,在baidu或者google输一下,基本上第一个就是,我的下载地址是:
http://www.mongodb.org/downloads
因为使用的是64位的ubuntu,所以下载了64-bit的mongodb,下载后解压缩。
到解压后的bin目录里执行./mongod
提示路径不存在,需要创建路径,执行mkdir -p /data/db,并授予权限。
然后重新执行./mongod,正常启动。
在浏览器中输入
可以获得数据库的管理信息。
shell中的CRUD
当上面的启动完成之后可以就可以使用shell了,运行./mongo,出现如下界面
输入db可以看到,默认连到test库上
mongodb自带了一个JavaScript Shell,可以通过命令行与mongodb实例进行交互。
可以直接利用javascript进行交互,也可以利用javascript中的函数和标准库。
增加
假设插入一条博客的信息有标题、文章内容和日期。
也就是说插入了一个post文件到blog集合中。
查看一下是否插入成功
可以看到查询的记录,其中_id是自动加入的记录。
读取
可以使用findOne()查看其中的一个文档。
上面说到的find()是查询所有记录的意思。find和findOne都可以接受文档形式的查询条件。
更新
更新操作其实就是update函数。
新增加备注
执行更新,需要加上条件
查看结果
删除
删除就是指remove函数。
删除完文档post之后,查看blog集合已经没有相应的post文档了。
操作的明细信息
关于mongodb的明细操作在[中文版] MongoDB权威指南 中都已经有了非常详细的说明,有需要的,可以到地址:
http://code.google.com/p/mycloub/downloads/list
进行下载并且深入研究。