MongDB基础学习(六)—— 【MongoDB for Java】Java操作MongoDB
2016-09-27 13:10
627 查看
【MongoDB for Java】Java操作MongoDB
开发的产品为了融资,不停得改版,从第一版到现在最新版本,最后发现公司发展方向都变了,有最初电子商务改成VR内容提供者(没办法,要别人钱,就得按照别人的规划的战略走)。本来本章节会放到后面再做讲解,无奈,部门需要做一次培训任务,我就想到拿Java操作MongoDB作为培训内容,开发环境和依赖jar如下:
(1)开发环境:
System:Windows
IDE:eclipse
Database:mongoDB2.6
Maven:apache-maven-3.0.4
(2)开发依赖库:
JavaEE7、mongo-2.6.5.jar、junit-4.11.jar
一、准备工作
1、 首先,下载mongoDB对Java支持的驱动包(我是直接拿maven下载的,文章最后我也会把相应的mongo-2.6.5.jar上传。
MongoDBfor Java的API文档地址为:http://api.mongodb.org/java/2.6.5/
MongoDB for Java相关的操作实例代码:http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/
我这里创建的是Maven工程,其pom文件内容如下:<span style="font-size:18px;"><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>com.hth</groupId>
<artifactId>mongodb</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>mongodb Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.6.5</version>
</dependency>
</dependencies>
<build>
<finalName>mongodb</finalName>
</build>
</project></span>
w
plain copy
如果你的开发环境没有安装maven环境,你可以建立一个JavaProject工程,导入MongoDB的驱动jar包,即可在Java中使用mongoDB,
二、Java操作MongoDB示例
在本示例之前你需要启动mongoDB的服务,启动后,下面的程序才能顺利执行;
1、 建立MongoDBDemo.java,完成简单的mongoDB数据库操作
Mongomongo = new Mongo();
这样就创建了一个MongoDB的数据库连接对象,它默认连接到当前机器的localhost地址,端口是27017。
DB db = mongo.getDB(“test”);
这样就获得了一个test的数据库(为mongoDB的默认的数据库),如果mongoDB中没有创建这个数据库也是可以正常运行的。得到了db,下一步我们要获取一个“聚集集合DBCollection”,通过db对象的getCollection方法来完成。
DBCollection users = db.getCollection("users");
这样就获得了一个DBCollection,它相当于我们数据库的“表”,在MongoDB中叫做集合。
查询所有数据
DBCursor cur = users.find();
while (cur.hasNext()) {
System.out.println(cur.next());
}
完整源码<span style="font-size:18px;">package com.hth.mongodb;
import java.net.UnknownHostException;
import java.util.Iterator;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
import com.mongodb.util.JSON;
/**
* @ClassName: MongoDBDemo
* @Description: TODO(MongoDB测试)
* @author wangzhao date 2015年2月11日 下午3:56:16
*
*/
public class MongoDBDemo {
public static void main(String[] args) throws UnknownHostException,
MongoException {
Mongo mongo = new Mongo("192.168.26.190", 27017);
for (String dbName : mongo.getDatabaseNames()) {
System.out.println("数据库实例:" + dbName);
}
DB db = mongo.getDB("dreamerkr");
for (String cName : db.getCollectionNames()) {
System.out.println("dreamerkr存在的集合:" + cName);
}
DBCollection webInfo = db.getCollection("web_info");
DBCursor dbCursor = webInfo.find();
while (dbCursor.hasNext()) {
System.out.println("每个文档数据为:" + dbCursor.next());
}
for (Iterator it = dbCursor.iterator(); it.hasNext();) {
System.out.println("每个文档数据为:" + it.next());
}
System.out.println("文档个数为:" + dbCursor.count());
System.out.println("序列化此文档"+JSON.serialize(dbCursor));
}
}</span>
2、 完成CRUD操作,首先建立一个MongoDBCRUDTest.java,基本测试代码如下:
[java] view plain copy
<span style="font-size:18px;">package com.hth.mongodb;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import org.bson.types.ObjectId;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
import com.mongodb.QueryOperators;
/**
* @ClassName: MongoDBCRUDTest
* @Description: TODO(MongoDB测试)
* @author wangzhao date 2015年2月11日 下午5:56:16
*
*/
public class MongoDBCRUDTest {
private Mongo mg = null;
private DB db;
private DBCollection webInfos;
@Before
public void init() {
try {
mg = new Mongo("192.168.26.190", 27017);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
}
// 获取dreamerkr DB;如果默认没有创建,mongodb会自动创建
db = mg.getDB("dreamerkr");
// 获取web_info DBCollection;如果默认没有创建,mongodb会自动创建
webInfos = db.getCollection("web_info");
}
@After
public void destory() {
if (mg != null) {
mg.close();
}
mg = null;
db = null;
webInfos = null;
}
public void print(Object o) {
System.out.println(o);
}
/**
* 1.queryAll(使用MongoDB的api查询所有数据).
*/
@Test
public void queryAll() {
print("查询webInfos的所有数据:");
// db游标
DBCursor cur = webInfos.find();
while (cur.hasNext()) {
print(cur.next());
}
}
/**
* add(插入一个对象).
*/
@Test
public void addObject() {
// 先查询所有数据
queryAll();
print("count: " + webInfos.count());
DBObject webInfo = new BasicDBObject();
webInfo.put("name", "追梦客");
webInfo.put("address", "http://www.dreamerkr.com");
// webInfos.save(webInfo)保存,getN()获取影响行数
print(webInfos.save(webInfo).getN());
// 查询下数据,看看是否添加成功
print("count: " + webInfos.count());
queryAll();
}
/**
* add(插入一个List).
*/
@Test
public void addList() {
queryAll();
print("count: " + webInfos.count());
DBObject webInfo = new BasicDBObject();
List<DBObject> list = new ArrayList<DBObject>();
webInfo.put("name", "追梦客");
webInfo.put("address", "http://www.dreamerkr.com");
webInfo.put("age", 2);
list.add(webInfo);
DBObject webInfo2 = new BasicDBObject("name", "追梦客2");
webInfo2.put("address", "www.hth.tv");
webInfo2.put("age", 1);
list.add(webInfo2);
webInfos.insert(list);
// 查询下数据,看看是否添加成功
print("count: " + webInfos.count());
queryAll();
}
/**
* add(插入一个数组).
*/
@Test
public void addArray() {
queryAll();
print("count: " + webInfos.count());
DBObject webInfo = new BasicDBObject();
webInfo.put("name", "追梦客");
webInfo.put("address", "http://www.dreamerkr.com");
// 添加多条数据,传递Array对象
webInfos.insert(webInfo, new BasicDBObject("name", "雨打排行"));
print("count: " + webInfos.count());
queryAll();
}
/**
*
* remove( 删除数据).
*/
@Test
public void remove() {
queryAll();
print("删除id = 54dc0cc3c50afa2987800aff:"
+ webInfos.remove(new BasicDBObject("_id", new ObjectId(
"54dc0cc3c50afa2987800aff"))).getN());
print("remove name = 追梦客2: "
+ webInfos
.remove(new BasicDBObject("name", "追梦客2")).getN());
print("remove age > 1: "
+ webInfos
.remove(new BasicDBObject("age", new BasicDBObject("$gt", 1))).getN());
}
/**
*
* modify(修改数据).
*/
@Test
public void modify() {
queryAll();
print("修改:"
+ webInfos.update(
new BasicDBObject("_id", new ObjectId(
"54dc0808c50a5945720b1724")),
new BasicDBObject("name", "雨打排行2")).getN());
print("修改:" + webInfos.update(new BasicDBObject("_id",
new ObjectId("54dc130fc50a1c2e75e2b060")), new BasicDBObject("age", 122),
true,// 如果数据库不存在,是否添加
false //false只修改第一条,管理api上面说为true时是删掉多条,测试结果是多条数据不修改,感觉很奇怪,知道的朋友,请给我解释一下,谢谢
).getN());
// 当数据库不存在就不修改、不添加数据,当多条数据就不修改(通用的原因,知道的朋友,请给我解释一下,谢谢)
print("修改多条:" + webInfos.updateMulti(new BasicDBObject("name", "追梦客"), new BasicDBObject("name",
"追梦客")).getN());
queryAll();
}
/**
*
* query( 查询数据).
*/
@Test
public void query() {
// 查询id = 54dc130fc50a1c2e75e2b05c
print("find id = 54dc130fc50a1c2e75e2b05c: "
+ webInfos.find(
new BasicDBObject("_id", new ObjectId(
"54dc130fc50a1c2e75e2b05c"))).toArray());
// 查询age = 122
print("find age = 122: "
+ webInfos.find(new BasicDBObject("age", 122)).toArray());
// 查询age >= 1
print("find age >= 1: "
+ webInfos
.find(new BasicDBObject("age", new BasicDBObject(
"$gte", 1))).toArray());
print("find age <= 2: "
+ webInfos
.find(new BasicDBObject("age", new BasicDBObject(
"$lte", 2))).toArray());
print("查询age!=3:"
+ webInfos.find(
new BasicDBObject("age", new BasicDBObject("$ne", 3)))
.toArray());
print("查询age in 1/122:"
+ webInfos.find(
new BasicDBObject("age", new BasicDBObject(
QueryOperators.IN, new int[] { 1, 122})))
.toArray());
print("查询age not in 1/2/122:"
+ webInfos.find(
new BasicDBObject("age", new BasicDBObject(
QueryOperators.NIN, new int[] { 1, 2, 122 })))
.toArray());
print("查询age exists 排序:"
+ webInfos.find(
new BasicDBObject("age", new BasicDBObject(
QueryOperators.EXISTS, true))).toArray());
print("只查询age属性:"
+ webInfos.find(null, new BasicDBObject("age", true)).toArray());
// 只查询一条数据,多条去第一条
print("findOne: " + webInfos.findOne());
print("findOne: " + webInfos.findOne(new BasicDBObject("age", 1)));
print("findOne: "
+ webInfos.findOne(new BasicDBObject("age", 1),
new BasicDBObject("name", true)));
// 查询修改、删除
print("findAndRemove 查询age=2的数据,并且删除: "
+ webInfos.findAndRemove(new BasicDBObject("age", 2)));
// 查询age=1的数据,并且修改name的值为好童话
print("findAndModify: "
+ webInfos.findAndModify(new BasicDBObject("age", 1),
new BasicDBObject("name", "好童话")));
queryAll();
}
}</span>
view
plain copy
好了,这里基本上就介绍这么多Java操作MongoDB的方法。其他的东西还需要你自己多多研究。上面操作MongoDB的方法都是一些常用的方法,比较简单。如果有什么问题,可以给我留言,谢谢!
开发的产品为了融资,不停得改版,从第一版到现在最新版本,最后发现公司发展方向都变了,有最初电子商务改成VR内容提供者(没办法,要别人钱,就得按照别人的规划的战略走)。本来本章节会放到后面再做讲解,无奈,部门需要做一次培训任务,我就想到拿Java操作MongoDB作为培训内容,开发环境和依赖jar如下:
(1)开发环境:
System:Windows
IDE:eclipse
Database:mongoDB2.6
Maven:apache-maven-3.0.4
(2)开发依赖库:
JavaEE7、mongo-2.6.5.jar、junit-4.11.jar
一、准备工作
1、 首先,下载mongoDB对Java支持的驱动包(我是直接拿maven下载的,文章最后我也会把相应的mongo-2.6.5.jar上传。
MongoDBfor Java的API文档地址为:http://api.mongodb.org/java/2.6.5/
MongoDB for Java相关的操作实例代码:http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/
我这里创建的是Maven工程,其pom文件内容如下:<span style="font-size:18px;"><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>com.hth</groupId>
<artifactId>mongodb</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>mongodb Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.6.5</version>
</dependency>
</dependencies>
<build>
<finalName>mongodb</finalName>
</build>
</project></span>
w
plain copy
如果你的开发环境没有安装maven环境,你可以建立一个JavaProject工程,导入MongoDB的驱动jar包,即可在Java中使用mongoDB,
二、Java操作MongoDB示例
在本示例之前你需要启动mongoDB的服务,启动后,下面的程序才能顺利执行;
1、 建立MongoDBDemo.java,完成简单的mongoDB数据库操作
Mongomongo = new Mongo();
这样就创建了一个MongoDB的数据库连接对象,它默认连接到当前机器的localhost地址,端口是27017。
DB db = mongo.getDB(“test”);
这样就获得了一个test的数据库(为mongoDB的默认的数据库),如果mongoDB中没有创建这个数据库也是可以正常运行的。得到了db,下一步我们要获取一个“聚集集合DBCollection”,通过db对象的getCollection方法来完成。
DBCollection users = db.getCollection("users");
这样就获得了一个DBCollection,它相当于我们数据库的“表”,在MongoDB中叫做集合。
查询所有数据
DBCursor cur = users.find();
while (cur.hasNext()) {
System.out.println(cur.next());
}
完整源码<span style="font-size:18px;">package com.hth.mongodb;
import java.net.UnknownHostException;
import java.util.Iterator;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
import com.mongodb.util.JSON;
/**
* @ClassName: MongoDBDemo
* @Description: TODO(MongoDB测试)
* @author wangzhao date 2015年2月11日 下午3:56:16
*
*/
public class MongoDBDemo {
public static void main(String[] args) throws UnknownHostException,
MongoException {
Mongo mongo = new Mongo("192.168.26.190", 27017);
for (String dbName : mongo.getDatabaseNames()) {
System.out.println("数据库实例:" + dbName);
}
DB db = mongo.getDB("dreamerkr");
for (String cName : db.getCollectionNames()) {
System.out.println("dreamerkr存在的集合:" + cName);
}
DBCollection webInfo = db.getCollection("web_info");
DBCursor dbCursor = webInfo.find();
while (dbCursor.hasNext()) {
System.out.println("每个文档数据为:" + dbCursor.next());
}
for (Iterator it = dbCursor.iterator(); it.hasNext();) {
System.out.println("每个文档数据为:" + it.next());
}
System.out.println("文档个数为:" + dbCursor.count());
System.out.println("序列化此文档"+JSON.serialize(dbCursor));
}
}</span>
2、 完成CRUD操作,首先建立一个MongoDBCRUDTest.java,基本测试代码如下:
[java] view plain copy
<span style="font-size:18px;">package com.hth.mongodb;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import org.bson.types.ObjectId;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
import com.mongodb.QueryOperators;
/**
* @ClassName: MongoDBCRUDTest
* @Description: TODO(MongoDB测试)
* @author wangzhao date 2015年2月11日 下午5:56:16
*
*/
public class MongoDBCRUDTest {
private Mongo mg = null;
private DB db;
private DBCollection webInfos;
@Before
public void init() {
try {
mg = new Mongo("192.168.26.190", 27017);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
}
// 获取dreamerkr DB;如果默认没有创建,mongodb会自动创建
db = mg.getDB("dreamerkr");
// 获取web_info DBCollection;如果默认没有创建,mongodb会自动创建
webInfos = db.getCollection("web_info");
}
@After
public void destory() {
if (mg != null) {
mg.close();
}
mg = null;
db = null;
webInfos = null;
}
public void print(Object o) {
System.out.println(o);
}
/**
* 1.queryAll(使用MongoDB的api查询所有数据).
*/
@Test
public void queryAll() {
print("查询webInfos的所有数据:");
// db游标
DBCursor cur = webInfos.find();
while (cur.hasNext()) {
print(cur.next());
}
}
/**
* add(插入一个对象).
*/
@Test
public void addObject() {
// 先查询所有数据
queryAll();
print("count: " + webInfos.count());
DBObject webInfo = new BasicDBObject();
webInfo.put("name", "追梦客");
webInfo.put("address", "http://www.dreamerkr.com");
// webInfos.save(webInfo)保存,getN()获取影响行数
print(webInfos.save(webInfo).getN());
// 查询下数据,看看是否添加成功
print("count: " + webInfos.count());
queryAll();
}
/**
* add(插入一个List).
*/
@Test
public void addList() {
queryAll();
print("count: " + webInfos.count());
DBObject webInfo = new BasicDBObject();
List<DBObject> list = new ArrayList<DBObject>();
webInfo.put("name", "追梦客");
webInfo.put("address", "http://www.dreamerkr.com");
webInfo.put("age", 2);
list.add(webInfo);
DBObject webInfo2 = new BasicDBObject("name", "追梦客2");
webInfo2.put("address", "www.hth.tv");
webInfo2.put("age", 1);
list.add(webInfo2);
webInfos.insert(list);
// 查询下数据,看看是否添加成功
print("count: " + webInfos.count());
queryAll();
}
/**
* add(插入一个数组).
*/
@Test
public void addArray() {
queryAll();
print("count: " + webInfos.count());
DBObject webInfo = new BasicDBObject();
webInfo.put("name", "追梦客");
webInfo.put("address", "http://www.dreamerkr.com");
// 添加多条数据,传递Array对象
webInfos.insert(webInfo, new BasicDBObject("name", "雨打排行"));
print("count: " + webInfos.count());
queryAll();
}
/**
*
* remove( 删除数据).
*/
@Test
public void remove() {
queryAll();
print("删除id = 54dc0cc3c50afa2987800aff:"
+ webInfos.remove(new BasicDBObject("_id", new ObjectId(
"54dc0cc3c50afa2987800aff"))).getN());
print("remove name = 追梦客2: "
+ webInfos
.remove(new BasicDBObject("name", "追梦客2")).getN());
print("remove age > 1: "
+ webInfos
.remove(new BasicDBObject("age", new BasicDBObject("$gt", 1))).getN());
}
/**
*
* modify(修改数据).
*/
@Test
public void modify() {
queryAll();
print("修改:"
+ webInfos.update(
new BasicDBObject("_id", new ObjectId(
"54dc0808c50a5945720b1724")),
new BasicDBObject("name", "雨打排行2")).getN());
print("修改:" + webInfos.update(new BasicDBObject("_id",
new ObjectId("54dc130fc50a1c2e75e2b060")), new BasicDBObject("age", 122),
true,// 如果数据库不存在,是否添加
false //false只修改第一条,管理api上面说为true时是删掉多条,测试结果是多条数据不修改,感觉很奇怪,知道的朋友,请给我解释一下,谢谢
).getN());
// 当数据库不存在就不修改、不添加数据,当多条数据就不修改(通用的原因,知道的朋友,请给我解释一下,谢谢)
print("修改多条:" + webInfos.updateMulti(new BasicDBObject("name", "追梦客"), new BasicDBObject("name",
"追梦客")).getN());
queryAll();
}
/**
*
* query( 查询数据).
*/
@Test
public void query() {
// 查询id = 54dc130fc50a1c2e75e2b05c
print("find id = 54dc130fc50a1c2e75e2b05c: "
+ webInfos.find(
new BasicDBObject("_id", new ObjectId(
"54dc130fc50a1c2e75e2b05c"))).toArray());
// 查询age = 122
print("find age = 122: "
+ webInfos.find(new BasicDBObject("age", 122)).toArray());
// 查询age >= 1
print("find age >= 1: "
+ webInfos
.find(new BasicDBObject("age", new BasicDBObject(
"$gte", 1))).toArray());
print("find age <= 2: "
+ webInfos
.find(new BasicDBObject("age", new BasicDBObject(
"$lte", 2))).toArray());
print("查询age!=3:"
+ webInfos.find(
new BasicDBObject("age", new BasicDBObject("$ne", 3)))
.toArray());
print("查询age in 1/122:"
+ webInfos.find(
new BasicDBObject("age", new BasicDBObject(
QueryOperators.IN, new int[] { 1, 122})))
.toArray());
print("查询age not in 1/2/122:"
+ webInfos.find(
new BasicDBObject("age", new BasicDBObject(
QueryOperators.NIN, new int[] { 1, 2, 122 })))
.toArray());
print("查询age exists 排序:"
+ webInfos.find(
new BasicDBObject("age", new BasicDBObject(
QueryOperators.EXISTS, true))).toArray());
print("只查询age属性:"
+ webInfos.find(null, new BasicDBObject("age", true)).toArray());
// 只查询一条数据,多条去第一条
print("findOne: " + webInfos.findOne());
print("findOne: " + webInfos.findOne(new BasicDBObject("age", 1)));
print("findOne: "
+ webInfos.findOne(new BasicDBObject("age", 1),
new BasicDBObject("name", true)));
// 查询修改、删除
print("findAndRemove 查询age=2的数据,并且删除: "
+ webInfos.findAndRemove(new BasicDBObject("age", 2)));
// 查询age=1的数据,并且修改name的值为好童话
print("findAndModify: "
+ webInfos.findAndModify(new BasicDBObject("age", 1),
new BasicDBObject("name", "好童话")));
queryAll();
}
}</span>
view
plain copy
好了,这里基本上就介绍这么多Java操作MongoDB的方法。其他的东西还需要你自己多多研究。上面操作MongoDB的方法都是一些常用的方法,比较简单。如果有什么问题,可以给我留言,谢谢!
相关文章推荐
- MongDB基础学习(七)—— 【MongoDB for Java】Java操作MongoDB
- MongoDB学习9_【MongoDB for Java】Java操作MongoDB
- 【MongoDB for Java】Java操作MongoDB
- 【MongoDB for Java】Java操作MongoDB
- mongDB基本命令和Java操作MongoDB
- 【MongoDB for Java】Java操作MongoDB
- 黑马程序员--Java基础学习之IO流之字节流、字符流、读取写入文件、Copy文件、键盘输入输出、流操作的基本规律
- 【MongoDB for Java】Java操作MongoDB
- 【MongoDB for Java】Java操作MongoDB
- 【MongoDB for Java】Java操作MongoDB
- mongodb基础系列——java操作mongodb实现图片文件功能
- 【MongoDB for Java】Java操作MongoDB
- java基础学习:常用的ant的操作
- 【MongoDB for Java】Java操作MongoDB
- 【MongoDB for Java】Java操作MongoDB
- java学习数据库操作基础更规范的写法——————工具类
- 【MongoDB for Java】Java操作MongoDB
- 学习MongoDB--(11):应用举例(利用java操作MongoDB)
- 【MongoDB for Java】Java操作MongoDB
- 【MongoDB for Java】Java操作MongoDB