学习MongoDB-应用举例(利用java操作MongoDB) JAVA单例MongoDB工具类
本文内容纲要:
-参考链接:
-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