欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

在JAVA中使用MongoDB

发布时间:2025/7/14 编程问答 55 豆豆
生活随笔 收集整理的这篇文章主要介绍了 在JAVA中使用MongoDB 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

2019独角兽企业重金招聘Python工程师标准>>>

首先,下载mongdb对JAVA的支持,点击这里下载驱动包,这里博主下载的是2.10.1版。

mongdb版本为2.4.9

在项目中导入该驱动包。

打开shell,在终端输入mongo,显示如下


只有默认的三个数据库。

新建一个java project

代码如下,

1.操控mongdb连接,使用MongoOptions来设置一些参数。

package Util;import java.net.UnknownHostException;import com.mongodb.DB; import com.mongodb.Mongo; import com.mongodb.MongoOptions;//数据库工具类 public class MongoDBUtil {private static Mongo mongo = null;private static String DBString = "MongoDBTest";//数据库名private static String hostName = "localhost";//主机名private static int port = 27017;//端口号private static int poolSize = 10;//连接池大小private MongoDBUtil(){}//获取数据库连接public static DB getDB(){if(mongo == null){init();}return mongo.getDB(DBString);}//初始化数据库private static void init(){try {//实例化Mongomongo = new Mongo(hostName, port);MongoOptions opt = mongo.getMongoOptions();//设置连接池大小opt.connectionsPerHost = poolSize;} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();}} }



2.基本操作接口

package DAO;import java.util.List;import com.mongodb.BasicDBObject;//数据库CRUD基本操作 public interface BaseDAO {public boolean insert(String collectionName, BasicDBObject bean);public boolean delete(String collectionName, BasicDBObject bean);public List find(String collectionName, BasicDBObject bean);public boolean update(String collectionName, BasicDBObject oldBean, BasicDBObject newBean);}

3.基本操作实现

package DAO.Impl;import java.util.List;import com.mongodb.BasicDBObject; import com.mongodb.DB;import Util.MongoDBUtil; import DAO.BaseDAO;//数据库基本操作实现 public class BaseDAOImpl implements BaseDAO {@Overridepublic boolean insert(String collectionName, BasicDBObject bean) {DB db = MongoDBUtil.getDB();db.getCollection(collectionName).insert(bean);return false;}@Overridepublic boolean delete(String collectionName, BasicDBObject bean) {DB db = MongoDBUtil.getDB();db.getCollection(collectionName).remove(bean);return false;}@Overridepublic List find(String collectionName, BasicDBObject bean) {DB db = MongoDBUtil.getDB();List list = db.getCollection(collectionName).find(bean).toArray();return list ;}@Overridepublic boolean update(String collectionName, BasicDBObject oldBean, BasicDBObject newBean) {DB db = MongoDBUtil.getDB();db.getCollection(collectionName).update(oldBean, newBean);return false;}}

4.基本操作测试

4.1添加文档操作

        BaseDAOImpl baseDAOImpl = new BaseDAOImpl();BasicDBObject beanOne = new BasicDBObject();beanOne.put("name", "kakakaka");beanOne.put("sex", "男");beanOne.put("age", 20);baseDAOImpl.insert("test", beanOne);

执行后结果

可以看到mongdb会自动检测是否存在数据库MongoDBTest,如果不存在则新建一个,然后再检测是否存在文档集合test,如果不存在则新建一个,最后插入数据。

4.2查询文档操作     

        List<BasicDBObject> list = baseDAOImpl.find("test", new BasicDBObject("name", "kakakaka"));for(BasicDBObject i : list){System.out.println(i.get("name"));System.out.println(i.get("sex"));System.out.println(i.get("age"));}

输出结果如下

kakakaka 男 20

4.3修改文档操作如下

        BasicDBObject oldBean = (BasicDBObject) baseDAOImpl.find("test", new BasicDBObject("name", "kakakaka")).get(0);BasicDBObject newBean = (BasicDBObject) oldBean.clone();newBean.put("name", "gugugugu");System.out.println(oldBean.get("name"));System.out.println(newBean.get("name"));baseDAOImpl.update("test", oldBean, newBean);

控制台输出结果

kakakaka gugugugu


4.4删除文档

先再向数据库插入一条数据

注意,mongdb区分一个文档中的不同数据是依赖它自己向每条数据中赋的"_id"

所以再插入这样一条数据

        BaseDAOImpl baseDAOImpl = new BaseDAOImpl();BasicDBObject beanOne = new BasicDBObject();beanOne.put("name", "gugugugu");beanOne.put("sex", "男");beanOne.put("age", 20);baseDAOImpl.insert("test", beanOne);

结果如下

执行删除操作

首先根据"_id"将文档中第二条数据修改

        baseDAOImpl.update("test", new BasicDBObject("_id", new ObjectId("5471c9db44aeeb8b5524f2ea")), new BasicDBObject("name","kakakaka").append("age", 20));

结果如下


将"name" 等于 "kakakaka"的数据删除

        baseDAOImpl.delete("test", new BasicDBObject("name","kakakaka"));

5.模糊搜索

使用正则表达式根据关键字key对数据库相应属性进行模糊搜索,

        String key = "a";Pattern pattern = Pattern.compile("^.*" + key + ".*$", Pattern.CASE_INSENSITIVE);DB db = MongoDBUtil.getDB();List list =  db.getCollection("test").find(new BasicDBObject("name", pattern)).toArray();for(int i = 0; i < list.size();i++){System.out.println(list.get(i));}

数据库内部的内容

输出结果

{ "_id" : { "$oid" : "547ebfc744aefdcc5fe90bce"} , "name" : "kakakaka" , "sex" : "男" , "age" : 20}


转载于:https://my.oschina.net/kakakaka/blog/347954

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的在JAVA中使用MongoDB的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。