[MongoDB学习日志]Java对MongoDB的CRUD操作

说起Java操作数据库自然会想到Sun的知名品牌JDBC,对于MongoDB这样的NoSQL数据库,暂时没有像JDBC这样的标准。这篇文章中对目前的形势做了分析和憧憬http://www.

  说起java操作数据库自然会想到sun的知名品牌jdbc,,对于mongodb这样的nosql数据库,暂时没有像jdbc这样的标准。

  这篇文章中对目前的形势做了分析和憧憬

立即学习“Java免费学习笔记(深入)”;

  回到正题记录下熟悉MongoDB为Java语言提供的操作接口mongo-java-driver.jar

立即学习“Java免费学习笔记(深入)”;

  1.基本的根基不变,连接数据库

  2.基本的数据库操作不变,CRUD

  3.变化的是提供的接口,实现类名,操作对象大不相同

  4.变化的是没有标准的Java操作MongoDB的标准API

立即学习“Java免费学习笔记(深入)”;

  MongoDB提供的Java操作API可以说是对Mongo数据库命令的Java翻译,熟悉Mongo命令,熟悉Java操作数据库的基本思路,很容易掌握基本操作。

立即学习“Java免费学习笔记(深入)”;

  数据库连接

package com.im;public final class SystemConstant {public static final class Configure {public static final String HOST = “127.0.0.1”;public static final int PORT = 27017;public static final String USERNAME = “”;public static final String PASSWORD = “”;public static final String DATABASE = “im”;}}package com.im;import java.net.UnknownHostException;import com.mongodb.Mongo;import com.mongodb.MongoException;public class MongoFactory {private static MongoFactory mongoFactory;private MongoFactory() {}public static MongoFactory getInstance() {if (mongoFactory == null) {mongoFactory = new MongoFactory();}return mongoFactory;}public Mongo getMongo() {Mongo mongo = null;try {mongo = new Mongo(SystemConstant.Configure.HOST,SystemConstant.Configure.PORT);} catch (UnknownHostException e) {e.printStackTrace();} catch (MongoException e) {e.printStackTrace();}return mongo;}}

立即学习“Java免费学习笔记(深入)”;

      数据库链接少不了的主机名,端口号,数据库名称。上面代码中的Mongo对象就相当与Connection对象。

立即学习“Java免费学习笔记(深入)”;

数据库的操作

下面的每个方法代表一个方面的测试

AI大学堂 AI大学堂

科大讯飞打造的AI学习平台

AI大学堂 87 查看详情 AI大学堂

测试类初始化方法:

private static BaseDao dao;@BeforeClasspublic static void start() {dao = new BaseDao(“users”,”uf”);}

关于BaseDao是对Mongo操作数据库的基本常用的方法做了封装的一个DAO对象,代码会在本文末尾附上。

立即学习“Java免费学习笔记(深入)”;

    插入:

立即学习“Java免费学习笔记(深入)”;

// 添加一条记录public void test1() {BasicDBObject jo = new BasicDBObject();jo.put(“_id”, “00001”);jo.put(“name”, “Tomcat”);jo.put(“age”, 22);jo.put(“interest”, new String[] { “swimming”, “Taiji”, “football” });int actual = dao.insert(jo);System.out.println(actual);Assert.assertEquals(1, actual);}

立即学习“Java免费学习笔记(深入)”;

// 添加多条记录public void test2() {int actual = 0;int size = 0;for (int i = 2; i

立即学习“Java免费学习笔记(深入)”;

立即学习“Java免费学习笔记(深入)”;

   BasicDBObject对象是Mongo的BSONObject的基本实现类,而BSONObject对象正是Key-Value的形式的Map保存到数据库中。

   基本的查询(主键查询,查询集合,条件查询)

// 查询指定编号的记录public void test3() {BasicDBObject query = new BasicDBObject();query.put(“_id”, “00001”);List dboList = dao.query(query);System.out.println(dboList.get(0).toString());Assert.assertEquals(1, dboList.size());}// 模糊查询,统计记录结果数量public void test4() {BasicDBObject query = new BasicDBObject();query.put(“interest”, new String[] { “swimming”, “Taiji” });long count = dao.getCount(query);Assert.assertEquals(9, count);}// 模块查询,查询结果集合public void test5() {BasicDBObject query = new BasicDBObject();query.put(“interest”, new String[] { “swimming”, “Taiji” });List dboList = dao.query(query);for (DBObject jo : dboList) {System.out.println(jo.toString());}Assert.assertEquals(9, dboList.size());}

  下面是插入数据后的数据库的数据情况,图中数据是各种测试后的数据,不完全对于每个方法的操作后数据库情况。

更新操作

     Mongo更新操作要准备两个BasicDBObject对象,一个是要更新的对象,另一个是更新后的对象。

// 更新指定记录的信息public void test6() {BasicDBObject query = new BasicDBObject();query.put(“_id”, “00001”);BasicDBObject jo = new BasicDBObject();jo.put(“_id”, “00001”);jo.put(“name”, “Jackson”);jo.put(“interest”, new String[] { “Song”, “Taiji”, “Running” });jo.put(“firends”,new BasicDBObject[] {(BasicDBObject) dao.query(new BasicDBObject(“_id”, “00002”)).get(0),(BasicDBObject) dao.query(new BasicDBObject(“_id”, “00002”)).get(0) });int actual = dao.update(query, jo);Assert.assertEquals(1, actual);}

删除操作

// 删除指定记录public void test7() {BasicDBObject query = new BasicDBObject();query.put(“_id”, “000010”);dao.delete(query);List dboList = dao.query(query);Assert.assertEquals(0, dboList.size());}

立即学习“Java免费学习笔记(深入)”;

  Mongo删除比较容易,指定一个BasicDBObject作为匹配条件,将删除匹配的所有记录(文档对象)。

多条件查询

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/538253.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月9日 13:43:12
下一篇 2025年11月9日 13:53:22

相关推荐

发表回复

登录后才能评论
关注微信