`
zhangdaiscott
  • 浏览: 448142 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
8fb25857-16b4-3681-ab5e-e319f45c42a8
Jeecg快速开发平台
浏览量:0
文章分类
社区版块
存档分类

Mongodb java 例子

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


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

MongoDB Java Driver 简单操作

一、Java驱动一致性



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

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

Java代码 复制代码收藏代码
  1. DBmdb=mongo.getDB('dbname');
  2. mdb.requestStart();
  3. //
  4. //业务代码
  5. //
  6. mdb.requestDone();


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



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



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

定义需要保存的对象:

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

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

Java代码 复制代码收藏代码
  1. Tweettweet=newTweet();
  2. tweet.put("user",userId);
  3. tweet.put("message",message);
  4. tweet.put("date",newDate());
  5. collection.insert(tweet);
当从数据库中查询时,结果会自动的转换成DBObject对象,我们可以转换成我们自己的类型:

Java代码 复制代码收藏代码
  1. collection.setObjectClass(Tweet);
  2. TweetmyTweet=(Tweet)collection.findOne();

三、创建连接



Java代码 复制代码收藏代码
  1. Mongom=newMongo();
  2. Mongom=newMongo("localhost");
  3. Mongom=newMongo("localhost",27017);
  4. DBdb=m.getDB("mydb);

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

四、认证(可选的)



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

五、取得Collection列表


Java代码 复制代码收藏代码
  1. Set<String>colls=db.getCollectionNames();
  2. for(Strings:colls){
  3. System.out.prinln(s);
  4. }

六、获取一个Collection



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

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



七、插入文档



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

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

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

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

Java代码 复制代码收藏代码
  1. DBObjectdoc=newBasicDBObject();
  2. doc.put("name","MongoDB");
  3. doc.put("type","database");
  4. doc.put("count",1);
  5. DBObjectinfo=newBasicDBObject();
  6. info.put("x",203);
  7. info.put("y",102);
  8. doc.put("info",info);
  9. 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
}

使用一个循环插入数据:

Java代码 复制代码收藏代码
  1. for(inti=0;i<100;i++){
  2. coll.insert(newBasicDBObject().append("i",i));
  3. }

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

十、统计文档数



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

Java代码 复制代码收藏代码
  1. longcount=coll.getCount();
  2. System.out.println(count);
控制台将会输出:101

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


Java代码 复制代码收藏代码
  1. DBCursorcursor=coll.find();
  2. while(cursor.hasNext()){
  3. DBObjectobject=cursor.next();
  4. System.out.println(object);
  5. }
十二、查询单个文档


Java代码 复制代码收藏代码
  1. DBObjectquery=newBasicDBObject();
  2. query.put("i",71);
  3. cursor=coll.find(query);
  4. while(cur.hasNext()){
  5. DBObjectobject=cursor.next();
  6. System.out.println(object);
  7. }
控制台的输出类似如下:

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

十三、查询文档集合



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

Java代码 复制代码收藏代码
  1. query=newBasicDBObject();
  2. query.put("i",newBasicDBObject("$gt",50));//i>50
  3. cursor=coll.find(query);
  4. while(cursor.hasNext()){
  5. DBObjectobject=cursor.next();
  6. System.out.println(object);
  7. }
比如查询条件为 20<i<=30:

Java代码 复制代码收藏代码
  1. query=newBasicDBObject();
  2. //20<i<=30
  3. query.put("i",newBasicDBObject("$gt",20).append("$lte",30));
  4. cursor=coll.find(query);
  5. while(cursor.hasNext()){
  6. DBObjectobject=cursor.next();
  7. System.out.println(object);
  8. }

十四、创建索引



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

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

十五、查询索引



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

Java代码 复制代码收藏代码
  1. List<DBObject>list=coll.getIndexInfo();
  2. for(DBObjectindex:list){
  3. System.out.println(index);
  4. }
控制台的输出类似如下所示:

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




MongoDB的管理功能

一、获取所有的数据库


Java代码 复制代码收藏代码
  1. Mongom=newMongo();
  2. for(Strings:m.getDatabaseNames()){
  3. System.out.println(s);
  4. }


二、删除数据库



m.dropDatabase("my_new_db");


MongoDB的Java类型



一、对象ID



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

Java代码 复制代码收藏代码
  1. ObjectIdid=newObjectId();
  2. ObjectIdcopy=newObjectId(id);
二、正则表达式



Java代码 复制代码收藏代码
  1. Patternjohn=Pattern.compile("joh?n",CASE_INSENSITIVE);
  2. DBObjectquery=newBasicDBObject("name",john);

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



三、日期和时间



Java代码 复制代码收藏代码
  1. Datenow=newDate();
  2. DBObjecttime=newBasicDBObject("ts",now);
  3. collection.save(time);

四、数据库引用



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

Java代码 复制代码收藏代码
  1. DBRefaddressRef=newDBRef(db,"foo.bar",address_id);
  2. DBObjectaddress=addressRef.fetch();
  3. DBObjectperson=BasicDBObjectBuilder.start()
  4. .add("name","Fred")
  5. .add("address",addressRef)
  6. .get();
  7. collection.save(person);
  8. DBObjectfred=collection.findOne();
  9. DBRefaddressObj=(DBRef)fred.get("address");
  10. addressObj.fetch();

五、二进制数据



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

六、内嵌文档



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

则在MongoDB中,Java表示为:

Java代码 复制代码收藏代码
  1. DBObjecty=newBasicDBObject("y",3);
  2. DBObjectx=newBasicDBObject("x",y);
七、数组



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

如果想表示如下JSON数据:

Java代码 复制代码收藏代码
  1. {
  2. "x":[
  3. 1,
  4. 2,
  5. {"foo":"bar"},
  6. 4
  7. ]
  8. }

则在Java中,应该为:

Java代码 复制代码收藏代码
  1. List<Object>x=newArrayList<Object>();
  2. x.add(1);
  3. x.add(2);
  4. x.add(newBasicDBObject("foo","bar"));
  5. x.add(4);
  6. DBObjectdoc=newBasicDBObject("x",x);
  7. System.out.println(doc);

分享到:
评论

相关推荐

    Mongodb java

    Mongodb java 例子

    MongoDB之Java使用例子

    在这个“MongoDB之Java使用例子”中,我们将深入探讨如何在Java环境中操作MongoDB数据库,包括增、删、改、查(CRUD)操作以及图像数据的存储和检索。 首先,Java与MongoDB的交互主要通过MongoDB的Java驱动程序实现...

    mongodb java 调用例子

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

    MongoDB Java API 中文

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

    MongoDB java实现增删改查

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

    MongoDB Java插入文档.pdf

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

    Mongodb数据库JAVA操作例子

    在Java应用程序中,我们通常使用Java驱动程序来与MongoDB进行交互。本篇将详细介绍如何利用Java实现MongoDB数据库的增、删、改、查(CRUD)操作。 1. **连接MongoDB** 要使用Java连接MongoDB,首先需要引入MongoDB...

    MongoDB Java获取集合.pdf

    在这个例子中,我们看到一个名为 `MongoDBJDBC` 的 Java 类,它演示了如何连接到 MongoDB 服务器并获取集合。以下是关键步骤的详细解释: 1. **连接到 MongoDB 服务**: 使用 `MongoClient` 类的构造函数,传入 ...

    Java操作MongoDB实例

    Java操作MongoDB实例,压缩包内为完整项目源码,使用MyEclipse软件 见文:https://blog.csdn.net/qq_33427869/article/details/87270444

    mongodb例子

    在这个“mongodb例子”中,我们很可能会找到一个简单的MongoDB数据库操作示例,这对于初学者来说是极好的学习资源。 MongoDB使用JSON格式的文档来存储数据,这种格式灵活且易于理解。数据库、集合和文档是MongoDB中...

    MongoDB、Java与对象关系映射

    ### MongoDB、Java与对象关系映射 #### MongoDB简介与特性 MongoDB作为一种强大的NoSQL数据库,在处理非结构化数据方面有着显著的优势。它通过使用JSON(JavaScript Object Notation)格式来存储和检索数据,简化...

    MongoDB Java查找文档.pdf

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

    mongodb_java_demo

    Java驱动程序(mongodb_java_driver)是MongoDB官方提供的用于Java应用程序与MongoDB交互的库,它允许开发者通过简单的API来执行各种数据库操作,如增、删、改、查。 在"mongodb_java_demo"这个项目中,我们将深入...

    spring mvc 集成mongoDB项目 例子

    这通常通过在`pom.xml`文件中添加MongoDB Java驱动和Spring Data MongoDB的Maven依赖来完成。例如: ```xml &lt;groupId&gt;org.springframework.data &lt;artifactId&gt;spring-data-mongodb 版本号 &lt;groupId&gt;org....

    spark 连接 mongodb 使用例子

    本示例将讨论如何使用Java语言在Spark中连接MongoDB进行CRUD(创建、读取、更新和删除)操作,同时涉及到Spring框架和Maven构建工具。 首先,我们需要确保已安装并配置了Spark、Java、MongoDB以及Maven。在Java项目...

    spring-springMVC-mongodb整合例子

    这个例子中的"spring-springMVC-mongodb整合"是一个很好的学习和实践项目,可以帮助开发者深入理解这些技术的结合使用。通过这样的整合,开发者能够构建出更加灵活、适应现代互联网需求的应用程序。

    spring mongodb很好的例子

    它提供了模板类和Repository接口,使得开发者可以通过Java代码而非原生的MongoDB驱动来操作数据库。例如,通过定义Repository接口,Spring Data会自动生成对应的CRUD操作,大大减少了编码工作量。 **MongoDB** ...

    MongoDB Java 接口

    在这个例子中,我们连接到了本地主机上的 MongoDB 服务器,并获取了一个名为 "mydatabase" 的数据库。 在数据库操作中,`MongoDatabase` 提供了对数据库级别的操作,如创建集合、获取集合等。而 `MongoCollection` ...

    spring-boot操作mongodb例子

    Spring Boot 是一个由 Pivotal 团队开发的框架,旨在简化 Spring 应用程序的...通过学习这个例子,开发者可以更好地理解如何在实际项目中利用 Spring Boot 的强大功能来操作非关系型数据库,实现高效的数据存储和检索。

    Java + MongoDB 实现 hello world 例子(译)

    在本教程中,我们将探讨如何使用Java编程语言与MongoDB数据库进行交互,通过一个简单的"Hello, World!"示例来入门。MongoDB是一款流行的、基于文档的NoSQL数据库,而Java是广泛应用于企业级开发的编程语言。结合两者...

Global site tag (gtag.js) - Google Analytics