moogdb操作

本文转载自 https://my.oschina.net/kakakaka/blog/347954 

 

首先,下载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 {             //实例化Mongo             mongo = new Mongo(hostName, port);             MongoOptions opt = mongo.getMongoOptions();             //设置连接池大小             opt.connectionsPerHost = poolSize;         } catch (UnknownHostException e) {             // TODO Auto-generated catch block             e.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 {     @Override     public boolean insert(String collectionName, BasicDBObject bean) {         DB db = MongoDBUtil.getDB();         db.getCollection(collectionName).insert(bean);         return false;     }     @Override     public boolean delete(String collectionName, BasicDBObject bean) {         DB db = MongoDBUtil.getDB();         db.getCollection(collectionName).remove(bean);         return false;     }     @Override     public List find(String collectionName, BasicDBObject bean) {         DB db = MongoDBUtil.getDB();         List list = db.getCollection(collectionName).find(bean).toArray();         return list ;     }     @Override     public 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://www.cnblogs.com/yangyang2018/p/10318741.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值