首页 文章资讯内容详情

学习MongoDB-应用举例(利用java操作MongoDB) JAVA单例MongoDB工具类

2026-05-31 4 花语

本文内容纲要:

-参考链接: -JAVA单例MongoDB工具类

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; publicclassTest{ publicstaticvoidmain(String[]args)throwsUnknownHostException{ /** *Mongo类代表与MongoDB服务器的连接,有多种构造函数。无参构造函数默认连接localhost:27017. */ Mongoconnection=newMongo("localhost:20000"); /** *DB类代表数据库,如果当前服务器上没有该数据库,会默认创建一个 */ DBdb=connection.getDB("mylearndb"); /** *DBCollection代表集合,如果数据库中没有该集合,会默认创建一个 */ DBCollectionusers=db.getCollection("users"); /** *DBObject代表文档,这是一个接口,java中提供了多种实现,最简单的就是BasicDBObject了 */ DBObjectuser=newBasicDBObject(); user.put("name","jimmy"); user.put("age","34"); DBObjectaddress=newBasicDBObject(); address.put("city","bj"); address.put("street","bqroad"); address.put("mail","ufpark68#"); /** *对于内嵌文档,我们需要先将内嵌文档填充后,再填充到外层文档中! */ user.put("address",address); //将该文档插入到集合中 users.insert(user); //从集合中查询数据,我们就查询一条,调用findOne即可 DBObjectdbUser=users.findOne(); System.out.println("name"+":"+dbUser.get("name")); System.out.println("age"+":"+dbUser.get("age")); DBObjectdbAddress=(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:34 city:bj street:bqroad mail:ufpark68#

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

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

【向集合中保存数组】

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

1packagecn.test; 2 3importjava.net.UnknownHostException; 4importjava.util.ArrayList; 5importjava.util.List; 6 7importcom.mongodb.BasicDBObject; 8importcom.mongodb.BasicDBObjectBuilder; 9importcom.mongodb.DB; 10importcom.mongodb.DBCollection; 11importcom.mongodb.DBObject; 12importcom.mongodb.Mongo; 13 14publicclassTest1{ 15 16publicstaticvoidmain(String[]args)throwsUnknownHostException{ 17 18/** 19*Mongo类代表与MongoDB服务器的连接,有多种构造函数。无参构造函数默认连接localhost:27017. 20*/ 21Mongoconnection=newMongo("localhost:20000"); 22/** 23*DB类代表数据库,如果当前服务器上没有该数据库,会默认创建一个 24*/ 25DBdb=connection.getDB("mylearndb"); 26/** 27*DBCollection代表集合,如果数据库中没有该集合,会默认创建一个 28*/ 29DBCollectionfruitShop=db.getCollection("fruitshop"); 30/** 31*创建水果店文档对象 32*/ 33DBObjectshop1=newBasicDBObject(); 34shop1.put("name","TheFruitKing"); 35/** 36*水果店内水果保存在一个内嵌文档的数组中,格式为: 37*[{"name":"apple","quality":"good","price":"5.6"}, 38*{"name":"orange","quality":"normal","price":"1.5"}, 39*......] 40*/ 41//数组通过List表示 42List<DBObject>fruits=newArrayList<DBObject>(); 43//数组中的每一个文档,我们通过BasicDBObjectBuilder来构造 44fruits.add(BasicDBObjectBuilder.start().add("name","apple").add("quality","good").add("price","5.6").get()); 45fruits.add(BasicDBObjectBuilder.start().add("name","orange").add("quality","normal").add("price","1.5").get()); 46shop1.put("fruits",fruits); 47 48fruitShop.insert(shop1); 49 50} 51 52}

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

1>usemylearndb; 2switchedtodbmylearndb 3>db.fruitshop.find(); 4{"_id":ObjectId("504c26fed9005e6e410c5979"),"name":"TheFruitKing","frui 5ts":[{"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文档:

http://api.mongodb.org/java/2.9.0/

参考链接:

JAVA单例MongoDB工具类

本文内容总结:参考链接:,JAVA单例MongoDB工具类,

原文链接:https://www.cnblogs.com/gaopeng527/p/4399127.html