`

mongodb java

    博客分类:
  • db
阅读更多

 

本周实验性地使用上mongodb,应用场景很简单,所以现在对mongodb了解也不是很深入。本文主要介绍mongodb的java客户端编程,这方 面的内容也很简单,这里只是做个总结。不得不说,像mongodb这种介于kv和sql之间的存储,对很多的互联网应用很合适。mongodb现在的应用 案例已经很多,并且社区的活跃度很高(国内也有不少人对其有很深的研究,如果有时间和精力,或许我也会投入一些对mongodb的研究),很值得期待。

言归正传,下面总结下使用Java开发mongodb应用的一些点滴。在Java中和mongodb交互的最直接的选择就是使用MongoDB Java Driver,其下载地址是:http://github.com/mongodb/mongo-java-driver/downloads。总的来 说,在Java中操作mongodb的API还是很简洁,下面对其一些常见的使用做些介绍。

1、连接数据库

和mongodb建立连接的示例代码如下:

       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实例一样,这个操作并不涉及真正的和数据库之间的通信。

DBCollection coll = db.getCollection("collection1");

 

要获得类似mysql中“show tables”功能,可以使用如下代码:

Set<String> colls = db.getCollectionNames();
	for (String s : colls) {
	    System.out.println(s);
	}
 

3、插入文档

mongodb存储JSON格式的文档,而在Java中表示这种数据格式的最简便的类就是Map了。MongoDB Java Driver中提供的BasicDBObject就是个Map(它继承自LinkedHashMap并实现DBObject接口),它会将Map中的数据 转换成BSON格式传输到mongodb。下面是插入文档的示例:

DBCollection coll = db.getCollection("collection1");
	BasicDBObject doc = new BasicDBObject();
	doc.put("name", "kafka0102");
	doc.put("age", 28);
	doc.put("time", new Date());
	coll.insert(doc);
 

mongodb中每个插入的文档会产生个唯一标识_id。当调用coll.insert(doc);时,driver会检查其中是否有_id字段,如果没 有则自动生成ObjectId实例来作为_id的值,这个ObjectId由4部分编码而成:当前时间、机器标识、进程号和自增的整数。
insert函数也支持插入文档列表:

insert(List<DBObject>list)
 

 

而提交操作也有update( DBObject q , DBObject o )、remove( DBObject o )。

4、查询文档

4.1、findOne

findOne是查询满足条件的第一条记录(不意味着数据库满足条件的只有一条记录),查询条件使用DBObject表示,示例如下:

DBCollection coll = db.getCollection("collection1");
	BasicDBObject cond = new BasicDBObject();
	cond.put("name", "kafka0102");
	cond.put("age", 28);
	DBObject ret = coll.findOne(cond);
	System.out.println(ret);
 

返回结果是个DBObject,可以通过get(key)来取值。对于查询条件,可以通过嵌套多层来表示复杂的格式,比如:

query = new BasicDBObject();
        query.put("i", new BasicDBObject("$gt", 50));  // e.g. find all where i > 50
 

4.2、find

find函数是查询集合的,它返回的DBCursor是DBObject的迭代器,使用示例如下:

 

DBCollection coll = db.getCollection("collection1");
	BasicDBObject cond = new BasicDBObject();
	cond.put("i", new BasicDBObject("$gt", 20).append("$lte", 30));
	DBCursor ret = coll.find(cond);
	while(ret.hasNext()) {
	   System.out.println(ret.next());
	}
 

5、使用索引

创建索引语句如:coll.createIndex(new BasicDBObject(“i”, 1)); ,其中i表示要索引的字段,1表示升序(-1表示降序)。可以看到,DBObject成为java客户端通用的结构表示。查看索引使用 DBCollection.getIndexInfo()函数。

6、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成员)。

7、其他选择

尽管Java mongodb driver很不错,但就像很多人不使用JDBC而使用一些ORM框架,mongodb的java客户端也有其他的选择。
1)对POJO和DAO的支持。对于那些热衷ORM的人来说,Morphia(http://code.google.com/p/morphia /wiki/QuickStart)是个不错的选择,它通过在POJO中添加注释来实现映射,并提供对DAO的CRUD操作的支持。
2)对DSL的支持。Sculptor就是这样的东西,使用者编写中立的DSL文件,Sculptor将其翻译成代码。这通常不具有吸引力,除非是多语言的应用,能将DSL翻译成多种编程语言,否则除了增加学习成本,没什么收益。
3)对JDBC的支持。mongo-jdbc是这样的东西,但现在还是实验性质的。它或许是想亲近Java程序员,不过它显然不能完全兼容JDBC,而很多Java程序员对JDBC也并不感冒,所以它不是很值得使用。

8、参考资料

1、http://www.mongodb.org/display/DOCS/Java+Tutorial
2、http://api.mongodb.org/java/2.0/index.html

分享到:
评论

相关推荐

    MongoDBjava各版本驱动下载

    MongoDB Java驱动是Java开发者与MongoDB数据库交互的重要工具,它允许Java应用程序通过标准的Java API来执行查询、插入、更新和删除等操作。在Java中使用MongoDB,首先需要安装并配置对应的驱动版本,以确保与正在...

    MongoDB Java Driver 简单操作

    为了方便开发者使用 Java 进行开发,MongoDB 提供了官方的 Java 驱动程序(MongoDB Java Driver),使得 Java 应用能够轻松地与 MongoDB 数据库进行交互。 #### 二、基本概念与连接 在开始使用 MongoDB Java Driver...

    MongoDB Java API 中文

    ### MongoDB Java API 使用详解 #### 一、Java 驱动简介与一致性 MongoDB 的 Java 驱动是线程安全的,适用于大多数应用程序场景。通常情况下,只需要创建一个 `Mongo` 实例即可,因为它内部包含了一个连接池(默认...

    MongoDB Java操作大全 源代码 实例

    在Java开发中,MongoDB提供了丰富的Java驱动程序,使得Java开发者能够方便地与MongoDB进行交互。本资料包“MongoDB Java操作大全 源代码 实例”将深入探讨如何使用Java API进行MongoDB的操作。 1. **连接MongoDB** ...

    mongodb java Driver

    MongoDB Java驱动程序是Java开发者用来与MongoDB数据库进行交互的一种关键工具。它提供了一组丰富的API,使得在Java应用程序中执行CRUD(创建、读取、更新、删除)操作变得简单而高效。MongoDB是一个分布式文档存储...

    mongoDB java driver api

    MongoDB Java驱动API是用于与MongoDB数据库交互的Java库,它是MongoDB官方提供的一个关键组件,使得Java开发者能够方便地在应用程序中存取数据。MongoDB是一个高性能、开源、无模式的文档型数据库,而Java驱动API则...

    mongodb java简单demo

    在Java开发中,我们通常使用Java驱动程序来与MongoDB进行交互。本篇将详细介绍如何使用Java连接MongoDB,以及进行基本的数据操作:创建集合、添加文档、修改文档、查询文档和删除文档。 首先,为了连接MongoDB,...

    mongodb java 驱动支持jar 及其源码

    在Java开发中,与MongoDB交互通常需要使用官方提供的Java驱动程序。本篇文章将详细介绍“mongodb java驱动支持jar”及其源码,帮助开发者更好地理解和使用这些资源。 首先,`mongo-java-driver-3.8.0.jar`是MongoDB...

    mongodb java driver 2.11

    MongoDB Java Driver 2.11是用于与MongoDB数据库进行交互的Java开发库,它提供了丰富的API,使得Java开发者可以方便地在应用程序中存取和管理MongoDB的数据。MongoDB是一款高性能、分布式、文档型的NoSQL数据库,它...

    MongoDb java driver 3.4.2

    MongoDB Java驱动程序3.4.2是Java开发者与MongoDB数据库进行交互的重要工具。MongoDB是一个流行的NoSQL数据库系统,而Java驱动程序则提供了在Java应用程序中操作MongoDB的接口。以下是关于MongoDB Java驱动3.4.2版本...

    MongoDB Java插入文档.pdf

    在Java开发中,我们通常使用MongoDB的Java驱动程序来与数据库进行交互,包括插入文档。以下是对【标题】"MongoDB Java插入文档.pdf"和【描述】中所述知识点的详细解释: 1. **MongoDB Java驱动程序**: MongoDB...

    MongoDB java实现增删改查

    在Java开发中,我们可以使用MongoDB的Java驱动程序来实现对MongoDB数据库的增、删、改、查(CRUD)操作。以下是对这些核心功能的详细说明。 1. **增加(Create)** 要在MongoDB中插入数据,我们需要使用`...

    MongoDBjava驱动源码程序

    MongoDB Java驱动是Java开发者与MongoDB数据库交互的主要工具,它是MongoDB官方提供的一款开源库,使得在Java应用程序中执行CRUD(创建、读取、更新、删除)操作变得简单。MongoDB Java驱动源码程序提供了深入理解其...

    Java连接mongoDB需要的jar包(3.9.1)

    这里提到的"Java连接mongoDB需要的jar包(3.9.1)"是指Java开发者用于连接MongoDB数据库的一组关键库文件,包括`bson-3.9.1.jar`、`mongodb-driver-3.9.1.jar`和`mongodb-driver-core-3.9.1.jar`。这些JAR文件是...

    MongoDB Java获取集合.pdf

    Java 是广泛使用的编程语言,MongoDB 提供了 Java 驱动程序,使得开发者可以轻松地在 Java 应用程序中操作 MongoDB 数据库。在本文中,我们将详细探讨如何使用 Java MongoDB 驱动程序来获取集合。 首先,我们需要...

    mongodb java 调用例子

    ### MongoDB Java调用示例详解 #### 一、概述 本文档主要介绍如何在Java环境中使用MongoDB进行数据库操作的基本方法。通过一个简单的Java程序,我们将会了解到如何连接MongoDB服务器、创建数据库、插入文档、查询...

    windows 64位mongodb安装包+java api文档

    在这个压缩包中,你将找到专为Windows 64位系统优化的MongoDB安装程序,以及Java API的文档,这对于使用Java进行MongoDB集成开发的开发者来说极其重要。 MongoDB的安装过程: 1. **下载与解压**:首先,你需要下载...

    Mongodb java

    Mongodb java 例子

    mongodb Java连接池

    mongodb Java连接池配置 用于避免Java连接mongodb数据库数过高引起的一系列问题

    MongoDB Java查找文档.pdf

    Java 是广泛使用的编程语言,它提供了 MongoDB 的驱动程序,允许开发者通过 Java 代码与 MongoDB 进行交互。本文将详细探讨如何在 Java 中使用 MongoDB 进行文档查找操作。 首先,为了连接到 MongoDB 服务器,我们...

Global site tag (gtag.js) - Google Analytics