java mongodb使用场景,在JAVA中使用MongoDB

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

mongdb版本为2.4.9

在项目中导入该驱动包。

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

f4b3ad7b4053271f2a52b19db2e312c6.png

只有默认的三个数据库。

新建一个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);

执行后结果

c218d67981f79c28cd50492b6d74ab02.png

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

4.2查询文档操作

List 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

223ae1c59b762b4fb0831acc63eff19d.png

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);

结果如下

13b58153ab76351b744855d63d000a4d.png

执行删除操作

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

baseDAOImpl.update("test", new BasicDBObject("_id", new ObjectId("5471c9db44aeeb8b5524f2ea"))

, new BasicDBObject("name","kakakaka").append("age", 20));

结果如下

bbb464514271693017ee203327f67ab5.png

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

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

1507e3a7ce958100579132e047163ef7.png

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 

System.out.println(list.get(i));

}

数据库内部的内容

1277d5aba937904dfa624e3b0dae75c7.png

输出结果

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