`
jzkangta
  • 浏览: 161649 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

mongodb java api(转)

阅读更多
原文地址:http://keben1983.blog.163.com/blog/static/143638081201010591157929/

该文档是翻译自文档[mongodb-docs-2010-10-24.pdf]的[Java Language Center]章节,根据自己的理解整理而成。


希望能给像我这样开始接触的朋友一点帮助,同时也做个备忘,因为是刚刚学习,其中的很多功能目前都用不上,以后万一有什么功能不太清楚,也可以直接查阅该文档了。

   MongoDB Java Driver 简单操作

一、Java驱动一致性



MongoDB的Java驱动是线程安全的,对于一般的应用,只要一个Mongo实例即可,Mongo有个内置的连接池(池大小默认为10个)。

对于有大量写和读的环境中,为了确保在一个Session中使用同一个DB时,我们可以用以下方式保证一致性:

DB mdb = mongo.getDB('dbname');

mdb.requestStart();
//
// 业务代码
//
mdb.requestDone();



DB和DBCollection是绝对线程安全的,它们被缓存起来了,所以在应用中取到的可能是同一个对象。



二、保存/查找对象(DBObject)



Java驱动提供了DBObject接口,方便我们保存对象到数据库中。

定义需要保存的对象:

public class Tweet implements DBObject {
  /** ...... */
}

然后我们可以使用该对象:

Tweet tweet = new Tweet();
tweet.put("user", userId);
tweet.put("message", message);
tweet.put("date", new Date());

collection.insert(tweet);

当从数据库中查询时,结果会自动的转换成DBObject对象,我们可以转换成我们自己的类型:

collection.setObjectClass(Tweet);

Tweet myTweet = (Tweet)collection.findOne();



三、创建连接



Mongo m = new Mongo();
Mongo m = new Mongo("localhost");
Mongo m = new Mongo("localhost", 27017);

DB db = m.getDB("mydb);

注意:事实上,Mongo实例代表了一个数据库连接池,即使在多线程的环境中,一个Mongo实例对我们来说已经足够了。

四、认证(可选的)



boolean auth = db.authenticate("myUserName", "myPasswd");

五、取得Collection列表



Set<String> colls = db.getCollectionNames();

for(String s : colls) {
  System.out.prinln(s);
}



六、获取一个Collection



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

使用DBCollection,我们可以进行插入、查询数据等数据操作。



七、插入文档



假设有个JSON文档如下所示:

{
  "name": "MongoDB",
  "type": "database",
  "count": 1,
  "info": {
     x: 203,
     y: 102
    }
}

注意:上面的JSON文档有个内嵌文档"info"。

我们完全可以利用BasicDBObject来创建一个和上面的JSON一样的文档,并且把它保存在MongoDB中。

DBObject doc = new BasicDBObject();

doc.put("name", "MongoDB");
doc.put("type", "database");
doc.put("count", 1);

DBObject info = new BasicDBObject();
info.put("x", 203);
info.put("y", 102);

doc.put("info", info);

coll.insert(doc);

八、查询第一个文档(findOne())



为了验证在上面我们保存的类似JSON的数据,我们可以用findOne()方法取得数据。

findOne(): 返回一个文档;
find(): 返回一个游标(DBCursor),其中包含一组对象DBObject;

DBObject doc = coll.findOne();
System.out.println(doc);

我们将会看到控制台输出:
{ "_id" : "49902cde5162504500b45c2c" , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102} , "_ns" : "testCollection"}

九、插入多个文档



为了在后来展示更多的查询方法,我们先插入几个文档,它们的JSON像这样:
{
  "i": value
}

使用一个循环插入数据:

for(int i = 0; i < 100; i++) {
  coll.insert(new BasicDBObject().append("i", i));
}

我们注意到,同一个coll,我们完全可以插入不同风格的数据,这就是MongoDB的重要特性“模式自由”。

十、统计文档数



现在我们已经有101份文档在数据库中了,现在统计一下看是否正确。

long count = coll.getCount();
System.out.println(count);

控制台将会输出:101

十一、使用游标取得所有的文档



DBCursor cursor = coll.find();

while(cursor.hasNext()) {
  DBObject object = cursor.next();
  System.out.println(object);
}

十二、查询单个文档



DBObject query = new BasicDBObject();

query.put("i", 71);

cursor = coll.find(query);

while(cur.hasNext()) {
  DBObject object = cursor.next();
  System.out.println(object);
}

控制台的输出类似如下:

{ "_id" : "49903677516250c1008d624e" , "i" : 71 , "_ns" : "testCollection"}

十三、查询文档集合



根据查询条件,我们可以通过DBCollection从数据库中取出多个对象,比如查询i>50的文档集合:

query = new BasicDBObject();

query.put("i", new BasicDBObject("$gt", 50)); // i>50

cursor = coll.find(query);

while(cursor.hasNext()) {
  DBObject object = cursor.next();
  System.out.println(object);
}

比如查询条件为 20<i<=30:

query = new BasicDBObject();

// 20<i<=30
query.put("i", new BasicDBObject("$gt", 20).append("$lte", 30));

cursor = coll.find(query);

while(cursor.hasNext()) {
  DBObject object = cursor.next();
  System.out.println(object);
}



十四、创建索引



MongoDB支持索引,并且给一个DBCollection添加索引非常简单,你只要指明需要创建索引的字段,然后指明其是升序(1)还是降序(-1)即可,比如在"i"上创建升序索引。

coll.createIndex(new BasicDBObject("i", 1)); // 1代表升序

十五、查询索引



我们可以查询到所有的索引:

List<DBObject> list = coll.getIndexInfo();

for(DBObject index : list){
  System.out.println(index);
}

控制台的输出类似如下所示:

{ "name" : "i_1" , "ns" : "mydb.testCollection" , "key" : { "i" : 1} , "_ns" : "system.indexes"}




   MongoDB的管理功能
  
一、获取所有的数据库



Mongo m = new Mongo();

for(String s : m.getDatabaseNames()) {
  System.out.println(s);
}



二、删除数据库



m.dropDatabase("my_new_db");


   MongoDB的Java类型



一、对象ID



ObjectId被用作自动生成的唯一ID.

ObjectId id = new ObjectId();
ObjectId copy = new ObjectId(id);

二、正则表达式



Pattern john = Pattern.compile("joh?n", CASE_INSENSITIVE);
DBObject query = new BasicDBObject("name", john);

// 查询所有 "name" 匹配 /joh?n/i 的文档
DBCursor cursor = collection.find(query);



三、日期和时间



Date now = new Date();
DBObject time = new BasicDBObject("ts", now);

collection.save(time);

四、数据库引用



DBRef可以用来保存数据库引用。

DBRef addressRef = new DBRef(db, "foo.bar", address_id);
DBObject address = addressRef.fetch();

DBObject person = BasicDBObjectBuilder.start()
  .add("name", "Fred")
  .add("address", addressRef)
  .get();
collection.save(person);

DBObject fred = collection.findOne();
DBRef addressObj = (DBRef)fred.get("address");
addressObj.fetch();

五、二进制数据



字节数组(byte[])被当作二进制数据。

六、内嵌文档



JSON样式的数据如下:
{
  "x": {
   "y": 3
  }
}

则在MongoDB中,Java表示为:

DBObject y = new BasicDBObject("y", 3);
DBObject x = new BasicDBObject("x", y);

七、数组



任何继承自List的对象,在MongoDB中,都被当成是数组。

如果想表示如下JSON数据:

{
  "x": [
   1,
   2,
   {"foo": "bar"},
   4
  ]
}

则在Java中,应该为:

List<Object> x = new ArrayList<Object>();
x.add(1);
x.add(2);
x.add(new BasicDBObject("foo", "bar"));
x.add(4);

DBObject doc = new BasicDBObject("x", x);
System.out.println(doc);
分享到:
评论

相关推荐

    MongoDB Java API 中文

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

    mongoDB java driver api

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

    mongodb java api 2.9.1chm版

    最新的2.9.1版本的java api文档。比较实用,方便离线的时候查看。

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

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

    mongodb_java_2.6_API

    本篇将深入探讨"mongodb_java_2.6_API",即MongoDB 2.6版本的Java驱动程序API,了解如何使用Java进行MongoDB的开发。 1. **MongoDB Java驱动程序概述** MongoDB的Java驱动程序是Java开发者与MongoDB服务器通信的...

    MongoDBjava各版本驱动下载

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

    MongoDB JAVA API

    MongoDB Java API是Java开发者与MongoDB数据库交互的接口,提供了丰富的功能,使得在Java应用程序中存储、查询和处理MongoDB的数据变得简单。本篇将详细介绍MongoDB Java Driver的一些核心概念和常用操作。 首先,...

    MongoDB java api 2.11..2版

    mongo-java-driver-2.11.2-javadoc

    MongoDB Driver -JAVA 2.5.3 API

    MongoDB Driver for Java 2.5.3是官方提供的用于Java开发者与MongoDB数据库交互的API。这个API允许程序员高效地执行各种操作,包括插入、查询、更新和删除MongoDB中的数据。MongoDB是一个高性能、无模式的文档型...

    MongoDB-Java驱动API

    在Java开发环境中,MongoDB提供了Java驱动API,使得Java程序员可以方便地与MongoDB进行交互。本文档将深入探讨如何利用Java驱动API来操作MongoDB数据库。 一、MongoDB Java驱动API简介 MongoDB的Java驱动程序是Java...

    MongoDB-JavaAPI

    在Java开发环境中,与MongoDB交互通常通过Java API进行。本项目聚焦于MongoDB的Java API使用,帮助开发者理解如何在Java应用程序中执行类似于SQL的操作。 MongoDB Java API是官方提供的驱动程序,它允许Java开发者...

    MongoDB(4) java api

    在Java开发中,MongoDB提供了Java驱动程序,使得开发者能够方便地通过Java API来操作MongoDB数据库。这篇博客将深入探讨在Java中使用MongoDB API的主要概念和操作。 首先,我们需要在项目中引入MongoDB Java驱动...

    mongodb-JavaApi

    在“mongodb-JavaApi”压缩包中,你很可能会找到以下关键知识点: 1. **连接MongoDB**:使用`MongoClient`类建立到MongoDB服务器的连接。你需要指定服务器地址(例如"localhost")和端口号(默认为27017)。 2. **...

    mongodb java 驱动支持jar 及其源码

    `mongo-java-driver-3.8.0.jar`提供了与MongoDB交互的API,`bson-3.8.0.jar`负责BSON的处理,而`mongo-java-driver-3.8.0-sources.jar`则为开发者提供了深入学习和调试的可能。通过理解这些组件的工作方式,开发者...

    mongodb java Driver

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

    MongoDB Java操作大全 源代码 实例

    本资料包“MongoDB Java操作大全 源代码 实例”将深入探讨如何使用Java API进行MongoDB的操作。 1. **连接MongoDB** 在Java中,首先需要通过`MongoClient`类建立到MongoDB服务器的连接。例如: ```java ...

    mongodb java driver 2.11

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

    MongoDB-API.chm

    mongo_java_driver_2.9.3_API_Jasun.chm mongodb.chm及网页版 mongo-java-driver-3.6.3.jar Spring Data MongoDB API1.8.1.chm spring-data-mongodb-reference.pdf .......................

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

    这些JAR文件是MongoDB Java驱动程序的一部分,允许Java应用程序通过Java Database Connectivity (JDBC)或者原生的MongoDB驱动API来操作MongoDB数据库。 1. `bson-3.9.1.jar`: BSON(Binary JSON)是MongoDB用于存储...

    MongoDb java driver 3.4.2

    8. **异步编程支持**:从3.x版本开始,MongoDB Java驱动程序引入了异步API,使用`MongoAsyncClient`和`MongoAsyncDatabase`,这使得在高并发环境中性能更优。 9. **安全认证**:MongoDB支持多种身份验证机制,如...

Global site tag (gtag.js) - Google Analytics