文档章节

在JAVA中使用MongoDB

kakakakaka
 kakakakaka
发布于 2014/11/23 20:14
字数 839
阅读 1158
收藏 69

首先,下载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}


© 著作权归作者所有

共有 人打赏支持
kakakakaka
粉丝 13
博文 19
码字总数 16810
作品 0
长沙
程序员
私信 提问
加载中

评论(2)

kakakakaka
kakakakaka

引用来自“孙青彪”的评论

弄一个demo放git上面,简明,直接?
抱歉,前面在忙一些事情没看到,我尽量找个时间把这些代码整理一下放到github上面吧。
写下带不走的风
写下带不走的风
弄一个demo放git上面,简明,直接?
Java 程序访问 MongoDB 数据库(入门)

NoSQL 数据库因为其良好的可伸缩性日益受关注,如果使用得当的话,NoSQL 可以带来很大的提升。而 MongoDB 就是一个用 C++ 开发的开源的高可伸缩性的 NoSQL 数据库。 本文将介绍如何在 Java 程...

红薯
2012/07/02
699
0
MongoDB:拥有 RDBMS 特性的 NoSQL 数据存储

如果您正在探索 NoSQL 数据库的世界,则 MongoDB(有时被誉为 NoSQL RDBMS)应在您的清单上获得一个位置。了解所有有关 MongoDB 的自定义 API、交互式 shell、RDBMS 类型动态查询的支持、以及...

红薯
2010/12/14
1K
4
Java 程序访问 MongoDB 数据库(入门)

NoSQL 数据库因为其良好的可伸缩性日益受关注,如果使用得当的话,NoSQL 可以带来很大的提升。而 MongoDB 就是一个用 C++ 开发的开源的高可伸缩性的 NoSQL 数据库。 本文将介绍如何在 Java 程...

王振威
2012/11/27
1K
1
Java MongoDB : Save image example

Java MongoDB : Save image example In this tutorial, we show you how to save an image file into MongoDB, via GridFS API. The GridFS APIs are able to serve other binary files as w......

引鸩怼孑
2015/05/22
0
0
【MongoDB for Java】Java操作MongoDB

开发环境: System:Windows IDE:eclipse、MyEclipse 8 Database:mongoDB 开发依赖库: JavaEE5、mongo-2.5.3.jar、junit-4.8.2.jar Email:hoojo_@126.com Blog:http://blog.csdn.net/IB......

underA
2013/05/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

redis数据结构

redis不只是一个简单的键(key)-值(value)数据库,实际上它是一个数据结构服务器,支持各种类型的值。也就是说,在传统的键-值数据库中,你把字符串键与字符串值联系起来,而在redis,值不仅限...

hblt-j
9分钟前
1
0
MySQL事务的的介绍及使用

1. 事务的特性 1.1 原子性(Atomicity): 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 1.2. 一致性(Consistency): 在一个事务中,事务的前后数据的完...

kuchawyz
14分钟前
0
0
[sed] 将 the 和 statement 之间的单词变为全大写

-bash-4.1$ cat textfind the Match statementConsult the Get statementusing the Read statement to retrieve data-bash-4.1$ cat sedsrc1/the .* statement/{hs/.*the (.......

圣洁之子
15分钟前
0
0
curl 编译安装(openssl)

//依赖安装yum install openssl openssl-develwget https://curl.haxx.se/download/curl-7.63.0.tar.gztar -zvxf curl-7.63.0.tar.gzcd curl-7.63.0./configure --prefix=......

colin_86
15分钟前
1
0
Canvas之使用图片

canvas有比较强的图片操作能力。可以用于动态的图像合成或者作为图形的背景。浏览器支持任意格式如PNG、GIF、或者JPEG,你甚至可以将同一个页面中的其他canvas元素生成的图片作为图片源(toDa...

tianyawhl
18分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部