moogdb操作

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

 

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

mongdb版本为2.4.9

在项目中导入该驱动包。

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

只有默认的三个数据库。

新建一个java project

代码如下,

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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.基本操作接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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.基本操作实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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添加文档操作

1
2
3
4
5
6
        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查询文档操作     

1
2
3
4
5
6
        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"));
        }

输出结果如下

1
2
3
kakakaka
20

4.3修改文档操作如下

1
2
3
4
5
6
        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);

控制台输出结果

1
2
kakakaka
gugugugu

4.4删除文档

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

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

所以再插入这样一条数据

1
2
3
4
5
6
        BaseDAOImpl baseDAOImpl = new BaseDAOImpl();
        BasicDBObject beanOne = new BasicDBObject();
        beanOne.put("name""gugugugu");
        beanOne.put("sex""男");
        beanOne.put("age"20);
        baseDAOImpl.insert("test", beanOne);

结果如下

执行删除操作

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

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

结果如下

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

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

5.模糊搜索

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

1
2
3
4
5
6
7
        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));
        }

数据库内部的内容

输出结果

1
"_id" : { "$oid" "547ebfc744aefdcc5fe90bce"} , "name" "kakakaka" "sex" "男" "age" 20}
posted @   __Ant  阅读(546)  评论(0编辑  收藏  举报
编辑推荐:
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· SQL Server 内存占用高分析
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
阅读排行:
· 我干了两个月的大项目,开源了!
· 推荐一款非常好用的在线 SSH 管理工具
· 千万级的大表,如何做性能调优?
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· .NET周刊【1月第1期 2025-01-05】
点击右上角即可分享
微信分享提示