Mongodb 学习记录

最近在学习mongodb 下面学习过的例子,总结到这里,方便查看

 

http://api.mongodb.org/java/2.7.3/
http://code.google.com/p/morphia/w/list

http://code.google.com/p/morphia/
https://github.com/mongodb/mongo-snippets/blob/master/java/Test.java  mongodb java驱动
http://wangjc-opal.iteye.com/blog/802571 数据库操作的语法

http://wenku.baidu.com/view/3cac76d176a20029bd642d35.html  mongodb 的orm 框架 morphia技术 pojo 类注解详解
http://qujunxi.iteye.com/blog/1124896


入门
博客 http://hogwartsrow.iteye.com/category/214734
     http://www.iteye.com/blogs/tag/morphia
安装

    http://rjhym.blog.163.com/blog/static/2813023220119272568926/


spring
http://chenshengzun.iteye.com/blog/1484596

工具包
http://xxing22657-yahoo-com-cn.iteye.com/blog/1233940


连接多个地址 集群
https://github.com/mongodb/mongo-snippets/blob/master/java/Test.java

 

2012-06-11

mondoVUE的基本使用
http://www.mongovue.com/2010/09/14/updating-collections/

高级查询:
http://www.blogjava.net/dongbule/archive/2010/09/16/332218.html

Mongodb 的ORM框架 Morphia 之 使用Morphia(映射对象)
http://blog.csdn.net/gundongdexueqiu/article/details/7004849#

 

2012-6-12

Mongo m = new Mongo("localhost",27017);
DB db = m.getDB("db_test");

尽管这里获得了表示mongodb的db_test数据库连接的对象db,但这时并没有真正和mongodb建立连接,所以即便这时数据库没起来也不会抛出异常,尽管你还是需要catch它的实例化过程。mongodb的java driver对连接做了池化处理,所以应用中只需要实例化一个Mongo对象即可,对它的操作是线程安全的,这对开发使用来说真的是很方便。

2、取得DBCollection

mongodb中的collection在Java中使用DBCollection表示(这是一个抽象类,尽管你不必需要知道),创建DBCollection实例也是一行代码,和创建DB实例一样,这个操作并不涉及真正的和数据库之间的通信。

3.MongoDB Java Driver的并发性

前面提到,Java MongoDB Driver使用了连接的池化处理,这个连接池默认是保持10个连接,可以通过Option进行修改,在应用中使用Mongo的一个实例即可。连接池中的每个连接使用DBPort结构表示(而不是DBCollection),并寄存于DBPortPool中,所以对DBCollection的操作并不意味着使用同一个连接。如果在应用的一次请求过程中,需要保证使用同一个连接,可以使用下面的代码片断:

DB db...;
db.requestStart();
//code....
db.requestDone();

在requestStart和requestDone之间使用的连接就不是来自于DBPortPool,而是当前线程中的ThreadLocal结构变量(MyPort中保持了DBPort成员)。

 


2012-6-13
整合spring http://xiaoruoen.blog.51cto.com/4828946/839756
http://www.blogjava.net/ashutc/archive/2011/04/14/348270.html spring注解

morphia中的注解 http://wenku.baidu.com/view/3cac76d176a20029bd642d35.html

一、   文档

文档是mongoDB数据库的最小集合单位,其基本概念为:由多个键及其关联的值有序组合在一起的集合单元。

如{“One”:”Hello World”,”Two”:”Hello,MongoDB”}

从概念可以分析得,由多个键。即可说明文档的组成类似于hash表,每个键对应一个记录值,事实上,可以将文档看成关系数据库中的行,每个键值组合可以看成是这个行中对应的列,键表示列的名称,值则为表列值。

文档定义有如下要求:

1、键不能含有\O(空字符),在mongoDB中,这个字符用来表示的结尾

2、.和$e 有特别含义,在特定环境中使用,使用这两个字符时。需考虑清楚。

3、以下划线“_”也是系统保留字符。使用时需要考虑清楚

4、键是区分大小写的,如{“One”:”Hello”,”one’:”hello”},则表示不同的键

5、在同一个文档中,不能有相同名称的键。即大小写都相同的键,如下面的文档是非法的:

{“one”:”hello”,”one”:”helloworld”}

6、文档中的键值的类型可以不一样的,如:

{“one”:1,”two”:”helloworld”,”three”:0.21}

 

 

二、            集合

集合即是一组文档,如果说文档类似于行的话。则集合则相当于表。

 

在mongoDB中,集合是无模式的,即一个集合中的文档可以各式各样的,在集合中,不同的文档的键值数目可以不一样,其中的键也可以不一样。不同文档同一个键,其值可以不一样,类型也可不一样。也即在同一个集合中,文档是相互独立的。

由于集合没有模式,而在实际使用中,可能会造成困扰,因为既然没有什么模式,集合的文档可以是任意的,那么就没必要要多个集合了。比如,我们建立一个博客数据库,在一个集合中可以保存博客文章、文章类别、登录用户等数据。当然,在实际运用中,怎么运还得看情况而定。

集合命令的规范:

1、 集合名不是能是空字符串;

2、 集合名不能含有\O字符(空字符),mongodb中此字符表示集合名的结尾;

3、 集合名不能以”system.”开头,因为此前缀是系统本身保留的前缀,如system.uses,表示系统用户信息,system.namespaces保存所有数据库集合的信息;

4、 集合名称不能有$字符。

 

 

三、            子集合

子集合可以看成是一个命名,如blog.users,blog.author,在这里,blog本身可以不是集合,还可以不存在。使用子集合是为了更好更有条理的区分集合

四、            数据库

   多个集合组成数据库。一个MongoDB实例中可以有多个数据库,每个数据库都是完全独立的,有自己的用户,权限信息,即便在磁盘上,其存储的文件也是分开的,这和SQL server之类的数据库一样。不同数据库其数据库文件可以存放在不同的目录。数据库命名规则如下:

1、 不能是空字符串;

2、 不得含有’’(空格)、,、$、/、\、和\O(空字符);

3、 应全部小写

4、 最多64个字节。

 

 

除外,数据库名不能与现有系统保留库同名,如admin,local,及config

 

你可能感兴趣的:(mongodb)