mongodb实现评论java_学习MongoDB-应用举例(利用java操作MongoDB)

本文介绍了如何使用Java驱动程序操作MongoDB,包括连接数据库、创建文档、插入数据以及保存数组。示例展示了如何创建一个包含内嵌文档的用户文档,并演示了从集合中查询数据的过程。
摘要由CSDN通过智能技术生成

Java驱动程序是MongoDB最早的驱动,已用于生产环境很长时间,十分稳定。可以到MongoDB官方网站下载驱动,驱动版本为2.9.0。

这个jar文件中,有两个包,我们会经常用到com.mongodb 和 com.mongodb.gridfs 。在Java中操作MongoDB,各种概念和shell中类似,几乎所有的方法名也都一致,我们先看个简单的例子吧:

packagecn.test;importjava.net.UnknownHostException;importcom.mongodb.BasicDBObject;importcom.mongodb.DB;importcom.mongodb.DBCollection;importcom.mongodb.DBObject;importcom.mongodb.Mongo;public classTest {public static void main(String[] args) throwsUnknownHostException {/*** Mongo类代表与MongoDB服务器的连接,有多种构造函数。无参构造函数默认连接localhost:27017.*/Mongo connection= new Mongo("localhost:20000");/*** DB类代表数据库,如果当前服务器上没有该数据库,会默认创建一个*/DB db= connection.getDB("mylearndb");/*** DBCollection代表集合,如果数据库中没有该集合,会默认创建一个*/DBCollection users= db.getCollection("users");/*** DBObject代表文档,这是一个接口,java中提供了多种实现,最简单的就是BasicDBObject了*/DBObject user= newBasicDBObject();

user.put("name", "jimmy");

user.put("age", "34");

DBObject address= newBasicDBObject();

address.put("city", "bj");

address.put("street", "bq road");

address.put("mail", "ufpark 68#");/*** 对于内嵌文档,我们需要先将内嵌文档填充后,再填充到外层文档中!*/user.put("address", address);//将该文档插入到集合中

users.insert(user);//从集合中查询数据,我们就查询一条,调用findOne即可

DBObject dbUser =users.findOne();

System.out.println("name" + " : " + dbUser.get("name") );

System.out.println("age" + " : " + dbUser.get("age") );

DBObject dbAddress= (DBObject)user.get("address");

System.out.println("city" + " : " + dbAddress.get("city") );

System.out.println("street" + " : " + dbAddress.get("street") );

System.out.println("mail" + " : " + dbAddress.get("mail") );

}

}

输出结果为:

name : jimmy

age :34city : bj

street : bq road

mail : ufpark68#

从上述例子,我们可以看出,利用Java驱动操作MongoDB和shell中操作方式是十分相似的。

我们这里稍微提一下上面注释中,解释的文档类。Java驱动中文档必须是DBObject接口类型,这个接口可以认为是一个有序地java.util.Map。Java驱动中有提供了很多实现,我们上例中采用了最简单的BasicDBObject。

【向集合中保存数组】

MongoDB集合中的键值对的值支持数组,在shell中,我们通过[],来表示数组,那Java驱动中如何表示数组呢?在Java驱动中,java.util.List类型的对象,都可以表示MongoDB中的数组!我们看一个例子:

1 packagecn.test;2

3 importjava.net.UnknownHostException;4 importjava.util.ArrayList;5 importjava.util.List;6

7 importcom.mongodb.BasicDBObject;8 importcom.mongodb.BasicDBObjectBuilder;9 importcom.mongodb.DB;10 importcom.mongodb.DBCollection;11 importcom.mongodb.DBObject;12 importcom.mongodb.Mongo;13

14 public classTest1 {15

16 public static void main(String[] args) throwsUnknownHostException {17

18 /**

19 * Mongo类代表与MongoDB服务器的连接,有多种构造函数。无参构造函数默认连接localhost:27017.20 */

21 Mongo connection = new Mongo("localhost:20000");22 /**

23 * DB类代表数据库,如果当前服务器上没有该数据库,会默认创建一个24 */

25 DB db = connection.getDB("mylearndb");26 /**

27 * DBCollection代表集合,如果数据库中没有该集合,会默认创建一个28 */

29 DBCollection fruitShop = db.getCollection("fruitshop");30 /**

31 * 创建水果店文档对象32 */

33 DBObject shop1 = newBasicDBObject();34 shop1.put("name", "The Fruit King");35 /**

36 * 水果店内水果保存在一个内嵌文档的数组中,格式为:37 * [{"name" : "apple", "quality" : "good", "price" : "5.6"},38 * {"name" : "orange", "quality" : "normal", "price" : "1.5"},39 * ......]40 */

41 //数组通过List表示

42 List fruits = new ArrayList();43 //数组中的每一个文档,我们通过BasicDBObjectBuilder来构造

44 fruits.add(BasicDBObjectBuilder.start().add("name", "apple").add("quality", "good").add("price", "5.6").get());45 fruits.add(BasicDBObjectBuilder.start().add("name", "orange").add("quality", "normal").add("price", "1.5").get());46 shop1.put("fruits", fruits);47

48 fruitShop.insert(shop1);49

50 }51

52 }

我们通过Shell连接到数据库上,直观地看看数据库中集合内的数据:

1 >use mylearndb;2 switched to db mylearndb3 >db.fruitshop.find();4 { "_id" : ObjectId("504c26fed9005e6e410c5979"), "name" : "The Fruit King", "frui5 ts" : [ { "name" : "apple", "quality" : "good", "price"

6 : "5.6" }, { "name" : "orange", "quality" : "normal", "price"

7 : "1.5"} ] }8 >

以上就是利用Java驱动操作MongoDB的一个简单示例,使用Java驱动操作MongoDB很简单,大家实际使用中对于API可以参照MongoDB提供的官方文档。

下面的链接就是2.9.0版驱动对应的API文档:

参考链接:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值