MongoDB基础教程
第一部分
翻译原因
网上的相关说明别说中文了连英文都很少,而且有的基本上就是一些简单的配置,加上最近时间比较多,有点想做,所以就做了。
致谢
先感谢国家,谢谢国家对我的培养,再感谢组织,感谢我的公司给我了研究MongoDB 的机会,让我有时间去研究了MongoDB,最后感谢父母的养育之恩。
温馨提示
我以下所有示例都是建立在Java语言的基础上,只作java语言的介绍,其他语言类似。
概述
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可护展的高性
能数据存储解决方案。
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
*面向集合存储,易存储对象类型的数据。
*模式自由。
*支持动态查询。
*支持完全索引,包含内部对象。
*支持查询。
*支持复制和故障恢复。
*使用高效的二进制数据存储,包括大型对象(如视频等)。
*自动处理碎片,以支持云计算层次的扩展性
*支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。
建模方法
*文件存储格式为BSON(一种JSON的扩展)
*可通过网络访问
所谓“面向集合”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。
模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。
存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型。我们称这种存储形式为BSON(Binary Serialized
dOcument Format)。
MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。
注意:以上概述部分摘自百度百科baike.baidu/view/3385614.htm
第二部分
基础知识(重点)
快速入门
快速入门Unix系统
安装MongoDB
先根据自己的系统下载自己需要的版本,然后解压即可
32位Linux
美甲制作$ curl /linux/mongodb-linux-i686-1. >
$ tar
64位Linux
$ curl /linux/mongodb-linux-x86_64-1. > $ tar
其他版本去下载页面/display/DOCS/Downloads与之对应的版本安装即可。
下载完了之后解压。
创建数据存放目录。
默认情况下MongoDB的数据存放目录是/data/db,但是MongoDB不会自己去创建目录,所以需要你手工创建:
$ sudo mkdir /data/db/
你也可以使用不同的路径,在启动的时候知道路径参数—dbpath即可。
启动MongoDB
$ ./mongodb-xxxxxxx/bin/mongod
连接MongoDB
$ ./mongodb-xxxxxxx/bin/mongo
> db.foo.save( { a : 1 } )
> db.foo.find()
恭喜你,到此为止,你的第一条数据已经保存进了Linux系统的MongoDB了。
快速入门windows系统
下载,安装同Linux的下载,安装,根据自己需要的版本去下载页面下载,下载完了之后解压,在这里不多罗嗦了。
创建数据目录
在windows下的默认数据目录是C:\data\db,但是MongoDB同样不会自己去创建该目录,需要自己的去创建,当然通Linux系统一下,也可以指定别的目录。在启动的时候告诉他即可。
启动MongoDB
mongodb-xxxxxxx\
连接MongoDB
mongodb-xxxxxxx\
> db.foo.save( { a : 1 } )
> db.foo.find()
恭喜你,到此为止,你的第一条数据已经保存进了windows系统的MongoDB了。
/display/DOCS/Downloads
MongoDB驱动下载
Java驱动下载地址github/mongodb/mongo-java-driver/downloads
PS:我正在写这个的时候MongoDB的最高版本是1.3
对应的API地址:/java/2.0/index.html
小试牛刀
湖南卫视主持人工资排名>凌美仕Java的驱动提供了一个DBObject接口,保存到数据库的对象需要实现该接口。请看下面这个例子:
public class Tweet implements DBObject {
/* ... */
}
然后你的保存可以这么写:
Tweet myTweet = new Tweet();
myTweet.put("user", userId);
myTweet.put("message", msg);
myTweet.put("date", new Date());
collection.insert(myTweet);
当一个文件从数据库检索出来,他自动转换成DBObject,为了转换成你所需要的类型,使用DBCollection.setObjectClass():雪梨老公张衍家是干嘛的
collection.setObjectClass(Tweet);
Tweet myTweet = (Tweet)collection.findOne();
PS:可能很多朋友测试不成功,不知道这个collection怎么来的,在这里你可以这样来获得collection:
DBAddress dba = new DBAddress("localhost", 27017, "TestDB");
DB db = t(dba);
DBCollectioncollection = db.getCollection("testcollection");
具体是为什么,后面会具体说到。
MongoDB的启动
//在这里主要说在Linux的下的问题,windows差不多,但不说了
普通启动
(1)默认启动bin/mongod
(2)指定端口和数据目录bin/mongod –dbpath=/var/data/ –port=556600
(3)带有鉴权的启动bin/mongod –auth
风平浪静是什么意思分布式配置
您需要启动的至少两个MongoDB文档数据库。
服务器1:192.168.1.10/Linux1
服务器2:192.168.1.11 /Linux2
启动服务器1:
bin/mongod –slave –source=192.168.1.11:556600 –dbpath=/var/db/ –port=556611 –slavedelay 10 &
启动服务器2:
bin/mongod –slave –source=192.168.1.10:556601 –dbpath=/var/db/ –port=556610 –slavedelay 10 &
PS:这里的意思是启动该服务器1,并且把服务器2作为主服务器,每10秒与
主服务器2同步一次。启动服务器2的意思是,把服务器1作为主服务器,每
10秒与服务器1同步一次。这样服务器1与服务器2就构成了同步了。
在这里我曾经在公司测试过,是可以的,但是我现在是放假在家里,不知道其
中是否有错误,你自己鉴别。
MongoDB在Java中的应用
建立连接
要建立MongoDB的连接,你只要指定要连接到的数据库就可以。这个数据库不一定存在,如果不存在,MongoDB会先为你建立这个库。同时,在连接时你也可以具体指定要连接到的网络地址和端口。(以下示例连接到Linux 192.168.1.10)
//创建一个连接地址
DBAddress dba = new DBAddress("192.168.1.10", 27017, "mydb1");
发布评论