标签:
MongonDB组件开发,封装成一个util,便于统一调用、管理。
一、引入POM
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.my.mongodb</groupId>
<artifactId>my-mongodb</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>my-mongodb</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>bson</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
二、配置mongoDB的数据库配置
(2)文件内容如下:
#服务器地址mongodb://开头 服务器地址为mongodb的服务器地址 注意端口及ip是否和你环境一致
mongo.uri=mongodb://127.0.0.1:27017
#每个主机答应的连接数(每个主机的连接池大小),当连接池被用光时,会被阻塞住 ,默以为10 --int
mongo.connectionsPerHost=50
#数据库名
mongo.databaseName=mymongo
三、mongoDB组件java类开发
定义包含初始化数据库、CRUD等功能基础类
package com.my.mongodb.dao; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import java.util.List; import java.util.Properties; import org.bson.Document; import org.bson.conversions.Bson; import org.bson.types.ObjectId; import com.mongodb.BasicDBObject; import com.mongodb.MongoClient; import com.mongodb.MongoClientOptions; import com.mongodb.MongoClientOptions.Builder; import com.mongodb.MongoClientURI; import com.mongodb.WriteConcern; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.model.Filters; import com.mongodb.client.result.DeleteResult; import com.mongodb.client.result.UpdateResult; import com.my.mongodb.enums.MongoOperation; /** * @Title MongoDbDao.java * @Description MongoDb Dao层服务类 * @author night * @date 2015年12月30日 上午10:51:06 * @version V1.0 */ public enum MongoDbDao { /** * 定义一个枚举的元素,它代表此类的一个实例 */ INSTANCE; private MongoClient mongoClient; /** * 指定默认数据库 */ private static String DEFAULTDBNAME; /** * 获取tomcat路径 */ private static String LOADPATH = "catalina.home"; /** * mongodb配置文件相对路径 */ private static String CONFIG_PATH = "commoncfg/dbconf/mongodb.properties";// tomcat 环境地址 catalina.home 值/Users/night/Documents/apache-tomcat-7.0 static { System.out.println("MongoDb初始化================Begin"); // 获取系统变量 Properties sysProperties = System.getProperties(); // 获取MongoDb配置路径 String uri = sysProperties.getProperty(LOADPATH) + File.separator + CONFIG_PATH; System.out.println(uri); // 加载配置路径 Properties properties = new Properties(); // InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(uri);//这种方式按上述路径无法加载到文件 InputStream inputStream = null; try { inputStream = new FileInputStream(uri); System.out.println(inputStream); properties.load(inputStream); for(Iterator<Object> itr = properties.keySet().iterator();itr.hasNext();){ String key = (String) itr.next(); System.out.println(key + "=" + properties.get(key)); } /* 将配置文件中的配置进行对应设置 */ DEFAULTDBNAME = properties.getProperty("mongo.databaseName"); Builder builder = new MongoClientOptions.Builder(); String perHost = properties.getProperty("mongo.connectionsPerHost"); builder.connectionsPerHost(Integer.parseInt(perHost)); builder.writeConcern(WriteConcern.SAFE);// WriteConcern.SAFE:抛出网络错误异常、服务器错误异常;并等待服务器完成写操作。 String clientURI = properties.getProperty("mongo.uri"); if (clientURI == null || "".equals(clientURI)) { throw new java.lang.IllegalArgumentException("mongo.uri 不能为空!"); } MongoClientURI mongoClientURI = new MongoClientURI(clientURI,builder); INSTANCE.mongoClient = new MongoClient(mongoClientURI); } catch (Exception e) { throw new RuntimeException("load resource fail, uri:" + uri + " errorMsg:" + e.getMessage(), e); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } System.out.println("MongoDb初始化================end"); } /** * * @Title getCollection * @Description 获取指定数据库的指定表 * @param dbName * 数据库名称 * @param collName * 表名称 * @return {@link } * @since 2015年12月30日 下午3:13:37 */ public MongoCollection<Document> getCollection(String dbName,String collName) { if (null == collName || "".equals(collName)) { return null; } if (null == dbName || "".equals(dbName)) { return null; } MongoCollection<Document> collection = mongoClient.getDatabase(dbName).getCollection(collName); return collection; } /** * * @Title getDefaultCollection * @Description 获取默认数据库表 * @param collName 表名称 * @return * {@link } * @since 2015年12月30日 下午4:08:40 */ public MongoCollection<Document> getDefaultCollection(String collName) { if (null == collName || "".equals(collName)) { return null; } MongoCollection<Document> collection = mongoClient.getDatabase(DEFAULTDBNAME).getCollection(collName); return collection; } /** * * @Title findById * @Description 通过id查询 * @param coll 表 * @param id 主键 mongodb默认主键名称为‘_id’ 无法修改 * @return * {@link } * @since 2015年12月30日 下午3:25:39 */ public Document findById(MongoCollection<Document> coll, String id) { ObjectId _idobj = null; try { _idobj = new ObjectId(id); } catch (Exception e) { e.printStackTrace(); } return coll.find(Filters.eq("_id", _idobj)).first(); } /** * * @Title find * @Description 条件查询 * @param coll 表 * @param filter 条件 * @return * {@link } * @since 2015年12月30日 下午4:10:37 */ public MongoCursor<Document> findByFilter(MongoCollection<Document> coll, Bson filter) { return coll.find(filter).iterator(); } /** * * @Title findByPage * @Description 分页查询 * @param coll 表 * @param filter 查询条件 * @param sort 排序条件 使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列。 * @param pageNo 需要跳转页 * @param pageSize 每页大小 * @return * {@link } * @since 2015年12月30日 下午5:52:43 */ public MongoCursor<Document> findByPage(MongoCollection<Document> coll, Bson filter,Bson sort , int pageNo, int pageSize) { if(sort == null){ sort = new BasicDBObject("_id", 1); } return coll.find(filter).sort(sort).skip((pageNo - 1) * pageSize).limit(pageSize).iterator(); } /** * * @Title getCount * @Description 查询表中记录条数 * @param coll 表 * @return * {@link } * @since 2015年12月30日 下午4:44:47 */ public int getCount(MongoCollection<Document> coll) { int count = (int) coll.count(); return count; } /** * * @Title deleteById * @Description 通过id删除 * @param coll 表 * @param id mongodb 默认主键 ‘_id’ * @return 被删除的条数 * {@link } * @since 2015年12月30日 下午3:36:14 */ public int deleteById(MongoCollection<Document> coll, String id) { ObjectId _id = null; try { _id = new ObjectId(id); } catch (Exception e) { return 0; } Bson filter = Filters.eq("_id", _id); DeleteResult deleteResult = coll.deleteOne(filter); return (int) deleteResult.getDeletedCount(); } /** * * @Title deleteByFilter * @Description 按条件删除 * @param coll 表 * @param filter 条件 * @return * {@link } * @since 2015年12月30日 下午4:16:00 */ public int deleteByFilter(MongoCollection<Document> coll, Bson filter){ DeleteResult deleteResult = coll.deleteMany(filter); return (int) deleteResult.getDeletedCount(); } /** * * @Title updateById * @Description 通过Id修改 * @param coll 表名称 * @param id mongodb默认主键 ‘_id’ * @param newdoc 被修改后的对象 * @return 返回被修改的条数 * {@link } * @since 2015年12月30日 下午3:44:05 */ public int updateById(MongoCollection<Document> coll, String id, Document newdoc) { ObjectId _idobj = null; try { _idobj = new ObjectId(id); } catch (Exception e) { return 0; } Bson filter = Filters.eq("_id", _idobj); UpdateResult updateResult =coll.updateOne(filter, new Document(MongoOperation.SET.getOperStr(), newdoc)); return (int)updateResult.getModifiedCount(); } /** * * @Title updateByFilter * @Description 按条件修改 * @param coll 表 * @param filter 条件 * @param newdoc 被修改后的对象 * @return 被修改的条数 * {@link } * @since 2015年12月30日 下午4:35:28 */ public int updateByFilter(MongoCollection<Document> coll, Bson filter, Document newdoc){ UpdateResult updateResult =coll.updateMany(filter, new Document(MongoOperation.SET.getOperStr(), newdoc)); return (int)updateResult.getModifiedCount(); } /** * * @Title insertOne * @Description 新增一个 * @param coll 表 * @param document 需新增对象 若没有设置'_id' 则mongodb自动生成 * {@link } * @since 2015年12月30日 下午4:41:54 */ public void insertOne(MongoCollection<Document> coll, Document document){ coll.insertOne(document); } /** * * @Title insertMany * @Description 新增多个 若没有设置'_id' 则mongodb自动生成 * @param coll 表 * @param documents 需新增对象 * {@link } * @since 2015年12月30日 下午4:43:35 */ public void insertMany(MongoCollection<Document> coll, List<Document> documents){ coll.insertMany(documents); } }
上面的属于DAO层,一般不对外提供服务。通过MongoDbUtils对外提供服务,代码如下:
package com.my.mongodb; import java.util.List; import org.bson.Document; import org.bson.conversions.Bson; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.my.mongodb.dao.MongoDbDao; /** * @Title MongoDbClient.java * @Description MongoDb组件对外服务类 * @author night * @date 2015年12月30日 下午3:59:46 * @version V1.0 */ public class MongoDbUtils { /** * * @Title getCollection * @Description 获取指定数据库的指定表 * @param dbName * 数据库名称 * @param collName * 表名称 * @return {@link } * @since 2015年12月30日 下午3:13:37 */ public static MongoCollection<Document> getCollection(String dbName,String collName) { return MongoDbDao.INSTANCE.getCollection(dbName, collName); } /** * * @Title getDefaultCollection * @Description 获取默认数据库表 * @param collName 表名称 * @return * {@link } * @since 2015年12月30日 下午4:08:40 */ public static MongoCollection<Document> getDefaultCollection(String collName) { return MongoDbDao.INSTANCE.getDefaultCollection(collName); } /** * * @Title findById * @Description 通过id查询 * @param collName 表名 * @param id 主键 mongodb默认主键名称为‘_id’ 无法修改 * @return * {@link } * @since 2015年12月30日 下午3:25:39 */ public static Document findById(String collName, String id) { MongoCollection<Document> coll = getDefaultCollection(collName); return MongoDbDao.INSTANCE.findById(coll, id); } /** * * @Title find * @Description 条件查询 * @param collName 表名 * @param filter 条件 * @return * {@link } * @since 2015年12月30日 下午4:10:37 */ public static MongoCursor<Document> findByFilter(String collName, Bson filter) { MongoCollection<Document> coll = getDefaultCollection(collName); return MongoDbDao.INSTANCE.findByFilter(coll, filter); } /** * * @Title findByPage * @Description 分页查询 * @param collName 表名 * @param filter 查询条件 * @param sort 排序条件 使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列。 * @param pageNo 需要跳转页 * @param pageSize 每页大小 * @return * {@link } * @since 2015年12月30日 下午5:52:43 */ public static MongoCursor<Document> findByPage(String collName, Bson filter,Bson sort , int pageNo, int pageSize) { MongoCollection<Document> coll = getDefaultCollection(collName); return MongoDbDao.INSTANCE.findByPage(coll, filter, sort, pageNo, pageSize); } /** * * @Title getCount * @Description 查询表中记录条数 * @param collName 表名 * @return * {@link } * @since 2015年12月30日 下午4:44:47 */ public static int getCount(String collName) { MongoCollection<Document> coll = getDefaultCollection(collName); return MongoDbDao.INSTANCE.getCount(coll); } /** * * @Title deleteById * @Description 通过id删除 * @param collName 表名 * @param id mongodb 默认主键 ‘_id’ * @return 被删除的条数 * {@link } * @since 2015年12月30日 下午3:36:14 */ public static int deleteById(String collName, String id) { MongoCollection<Document> coll = getDefaultCollection(collName); return MongoDbDao.INSTANCE.deleteById(coll, id); } /** * * @Title deleteByFilter * @Description 按条件删除 * @param collName 表名 * @param filter 条件 * @return * {@link } * @since 2015年12月30日 下午4:16:00 */ public static int deleteByFilter(String collName, Bson filter){ MongoCollection<Document> coll = getDefaultCollection(collName); return MongoDbDao.INSTANCE.deleteByFilter(coll, filter); } /** * * @Title updateById * @Description 通过Id修改 * @param collName 表名称 * @param id mongodb默认主键 ‘_id’ * @param newdoc 被修改后的对象 * @return 返回被修改的条数 * {@link } * @since 2015年12月30日 下午3:44:05 */ public static int updateById(String collName, String id, Document newdoc) { MongoCollection<Document> coll = getDefaultCollection(collName); return MongoDbDao.INSTANCE.updateById(coll, id, newdoc); } /** * * @Title updateByFilter * @Description 按条件修改 * @param collName 表名称 * @param filter 条件 * @param newdoc 被修改后的对象 * @return 被修改的条数 * {@link } * @since 2015年12月30日 下午4:35:28 */ public static int updateByFilter(String collName, Bson filter, Document newdoc){ MongoCollection<Document> coll = getDefaultCollection(collName); return MongoDbDao.INSTANCE.updateByFilter(coll, filter, newdoc); } /** * * @Title insertOne * @Description 新增一个 * @param collName 表名称 * @param document 需新增对象 若没有设置'_id' 则mongodb自动生成 * {@link } * @since 2015年12月30日 下午4:41:54 */ public static void insertOne(String collName, Document document){ MongoCollection<Document> coll = getDefaultCollection(collName); MongoDbDao.INSTANCE.insertOne(coll, document);; } /** * * @Title insertMany * @Description 新增多个 若没有设置'_id' 则mongodb自动生成 * @param collName 表名 * @param documents 需新增对象 * {@link } * @since 2015年12月30日 下午4:43:35 */ public static void insertMany(String collName, List<Document> documents){ MongoCollection<Document> coll = getDefaultCollection(collName); MongoDbDao.INSTANCE.insertMany(coll, documents); } }
定义MongbDB操作符及查询符
package com.my.mongodb.enums; /** * * @Title MongoOperation.java * @Description MongoDb操作符 * @author night * @date 2015年12月30日 下午4:32:05 * @version V1.0 */ public enum MongoOperation { INC("$inc","增加或插入"), SET("$set","设置或新建"), UNSET("$unset","$set的反操作"), PUSH("$push","元素追加数组末尾"), PUSHALL("$pushAll","$push的批量操作版"), ADDTOSET("$addToSet","同$push,但会过滤重复元素"), POP("$pop","{$pop : {key : 1}}——从数组末尾移除元素 {$pop : {key : -1}}——从数组开头移除元素"), PULL("$pull","从数组中移除所有匹配的元素"), PULLALL("$pullALL","$pull的批量操作版本"), RENAME("$rename","修改指定键的键名"), BIT("$bit","对整形的键值执行位操作‘与’,‘或’等"); private String operStr; private String mean; private MongoOperation(String operStr,String mean){ this.operStr=operStr; this.mean=mean; } public String getOperStr() { return operStr; } public void setOperStr(String operStr) { this.operStr = operStr; } public String getMean() { return mean; } public void setMean(String mean) { this.mean = mean; } }
package com.my.mongodb.enums; /** * * @Title Seach.java * @Description 查询操作符 可参考https://docs.mongodb.org/v3.0/reference/operator/query/ * @author night * @date 2016年1月12日 下午3:29:55 * @version V1.0 */ public enum Seach { LT("$lt","小于-->{ a : { $gt: value } }"), LTE("$lte","小于等于"), GT("$gt","大于"), GTE("$gte","大于等于"), ALL("$all","数组中的元素是否完全匹配-->{ a: { $all: [ 2, 3 ] } }"), EXISTS("$exists","可选:true,false-->{ a : { $exists : true } }"), MOD("$mod","取模:a % 10 == 1 -->{ a : { $mod : [ 10 , 1 ] } }"), NE("$ne","取反:即not equals -->{ x : { $ne : 3 } }"), EQ("$eq","类似equals-->db.inventory.find( { qty: { $eq: 20 } } )"), IN("$in","类似于SQL的IN操作-->{j:{$in: [2,4,6]}}"), NIN("$nin","$in的反操作,即SQL的 NOT IN-->{j:{$nin: [2,4,6]}}"), NOR("$nor","$or的反操作,即不匹配(a或b)-->{ name : 'bob' , $nor : [ { a : 1 } , { b : 2 } ] }"), OR("$or","Or子句,注意$or不能嵌套使用-->{ name : 'bob' , $or : [ { a : 1 } , { b : 2 } ] }"), SIZE("$size","匹配数组长度-->{ a : { $size: 1 } }"), TYPE("$type","匹配子键的数据类型-->{ a : { $type : 2 } }"), NOT("$not","$not执行逻辑NOT运算,选择出不能匹配表达式的文档 ,包括没有指定键的文档-->{ amount: { $not: { $gt: 50 } } }"); private String operStr; private String mean; private Seach(String operStr,String mean){ this.operStr=operStr; this.mean=mean; } public String getOperStr() { return operStr; } public void setOperStr(String operStr) { this.operStr = operStr; } public String getMean() { return mean; } public void setMean(String mean) { this.mean = mean; } }
四、使用说明
(1) 假设RequestData为需要存入的对象 对实体bean要求如下
package com.mongdb.entity; import java.util.Date; import org.bson.Document; import org.bson.types.ObjectId; /** * @Title RequestData.java * @Description TODO * @author night * @date 2015年12月29日 下午4:06:14 * @version V1.0 */ public class RequestData { /** * Mongodb主键 id类型不可改 */ private ObjectId id; private String cardNo; private String cardPwd; private Date firstDate; //转换为toDocument 在新增和修改时都需要转换 新增和修改的对象都是Document public Document toDocument(RequestData requestData){ Document document = new Document(); document.put("cardNo", requestData.getCardNo()); document.put("cardPwd", requestData.getCardPwd()); document.put("firstDate", requestData.getFirstDate()); return document; } //转换为实体bean 查询结果为Document 若想用该bean则需要转换 public void toRequestData(Document document){ this.setId(document.getObjectId("_id")); this.setCardNo(document.getString("cardNo")); this.setCardPwd(document.getString("cardPwd")); this.setFirstDate(document.getDate("firstDate")); } /** * @return the id */ public ObjectId getId() { return id; } /** * @param id the id to set */ public void setId(ObjectId id) { this.id = id; } /** * @return the cardNo */ public String getCardNo() { return cardNo; } /** * @param cardNo the cardNo to set */ public void setCardNo(String cardNo) { this.cardNo = cardNo; } /** * @return the cardPwd */ public String getCardPwd() { return cardPwd; } /** * @param cardPwd the cardPwd to set */ public void setCardPwd(String cardPwd) { this.cardPwd = cardPwd; } /** * @return the firstDate */ public Date getFirstDate() { return firstDate; } /** * @param firstDate the firstDate to set */ public void setFirstDate(Date firstDate) { this.firstDate = firstDate; } }
(2)增删改查:(mongodb.properties配置中的数据库若不存在,则会自动创建,下面所有“student” 为表名称,若表不存在,也会自动创建) 直接使用MongoDbUtils.XXX进行调用即可
新增:
新增方法如下:
void insertOne(String collName, Document document);//新增单条 collName 表名 document需要保存的对象
void insertMany(String collName, List<Document> documents);//入库多条
具体示例如下:
public String add(@ModelAttribute RequestData data){
//入库之前需先转换为document
Document document = data.toDocument(data);
MongoDbUtils.insertOne("student", document);//入库单条
MongoCursor<Document> findByFilter(String collName, Bson filter);//条件查询 collName为表名 filter为查询条件
MongoCursor<Document> findByPage(String collName, Bson filter,Bson sort , int pageNo, int pageSize);//分页查询 filter查询条件 sort排序条件
//如Bson sort = new BasicDBObject("_id", 1); 通过主键_id排序 使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列。
// pageNo 需要去的页 不可为0pageSize每页大小
具体使用如下:
//Bson filter = Filters.ne("_id", "-12");不等于
//Bson filter = Filters.eq("_id", "-12");等于
//String[] items = {"1","3","4"};
//Bson filter = Filters.in("cardNo", items);查询卡号分别为 1,3 ,4的数据
//查询当前五分钟之内的数据 firstDate在mongodb中是直接以Date类型存储的 此处注意Filters.and的用法 可以同时包含多个条件
Date date = new Date();
date.setMinutes(-5);
Bson filter = Filters.and(Filters.lte("firstDate", new Date()),Filters.gte("firstDate", date));
MongoCursor<Document> result = MongoDbUtils.findByFilter("student", filter);//条件查询
List<RequestData> listData = new ArrayList<RequestData>();
while (result.hasNext()) {
Document document=result.next();
RequestData requestData=new RequestData();
requestData.toRequestData(document);//将查询结果Document转换为实体bean
listData.add(requestData);
}
modelMap.put("listData", listData);
return "result";
}
@RequestMapping(value = "/del")
public String del(String id){
int delCount = MongoDbUtils.deleteById("student", id);
System.out.println("删除条数:" + delCount);
return "redirect:/queryAll";
@RequestMapping(value="/modify")
public String modify(@ModelAttribute RequestData data,ModelMap model){
System.out.println("要修改的数据id:" + data.getId());
data.setFirstDate(new Date());//设置最后修改时间
Document newDocument = data.toDocument(data);//将bean转换为 Document
int updateCount = MongoDbUtils.updateById("student", data.getId().toString(), newDocument);//按id修改
System.out.println("修改条数:" + updateCount);
return "redirect:/queryAll";
}
或者直接看我测试的的Controller类 类似于Strus2的action
package com.mongdb.controller; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.bson.Document; import org.bson.conversions.Bson; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import com.mongdb.entity.RequestData; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.model.Filters; import com.my.mongodb.MongoDbUtils; import com.my.mongodb.dao.MongoDbDao; /** * @Title MongdbController.java * @Description TODO * @author night * @date 2015年12月29日 下午3:39:37 * @version V1.0 */ @Controller public class MongdbController { private int pageSize = 2; @RequestMapping(value = "/add") public String add(@ModelAttribute RequestData data){ // Map<String, String> map = System.getenv(); // for(Iterator<String> itr = map.keySet().iterator();itr.hasNext();){ // String key = itr.next(); // System.out.println(key + "=" + map.get(key)); // } // // System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); // Properties p = System.getProperties(); // for(Iterator<Object> itr = p.keySet().iterator();itr.hasNext();){ // String key = (String) itr.next(); // System.out.println(key + "=" + p.get(key)); // } data.setFirstDate(new Date()); Document document = data.toDocument(data); MongoDbUtils.insertOne("student", document); return "redirect:/queryAll"; } @RequestMapping(value = "/queryAll") public String queryAll(ModelMap modelMap){ //一种查询方式 // Document filter =new Document(); // filter.append(Seach.NE.getOperStr(), "-12"); // Document seachDocument=new Document(); // seachDocument.put("_id", filter); //另一种查询方式 //Bson filter = Filters.ne("_id", "-12");不等于 //Bson filter = Filters.eq("_id", "-12");等于 //查询卡号分别为 1,3 ,4的数据 //String[] items = {"1","3","4"}; //Bson filter = Filters.in("cardNo", items); //查询当前五分钟之内的数据 firstDate在mongodb中是直接以Date类型存储的 Date date = new Date(); date.setMinutes(-5); System.out.println(date.toLocaleString()); Bson filter = Filters.and(Filters.lte("firstDate", new Date()),Filters.gte("firstDate", date)); MongoCursor<Document> result = MongoDbUtils.findByFilter("student", filter); List<RequestData> listData = new ArrayList<RequestData>(); int count = 0; System.out.println("--》第" + count +"条"); while (result.hasNext()) { count++; System.out.println("第" + count +"条"); Document document=result.next(); RequestData requestData=new RequestData(); requestData.toRequestData(document); listData.add(requestData); } modelMap.put("listData", listData); return "result"; } @RequestMapping(value = "/del") public String del(String id){ System.out.println("需要删除数据id:" + id); int delCount = MongoDbUtils.deleteById("student", id); System.out.println("删除条数:" + delCount); return "redirect:/queryAll"; } @RequestMapping(value="/update") public String update(String id,ModelMap model){ System.out.println("要修改的数据id:" + id); Document document = MongoDbUtils.findById("student", id); RequestData data = new RequestData(); data.toRequestData(document); model.put("data", data); return "update"; } @RequestMapping(value="/modify") public String modify(@ModelAttribute RequestData data,ModelMap model){ System.out.println("要修改的数据id:" + data.getId()); data.setFirstDate(new Date()); Document newDocument = data.toDocument(data); int updateCount = MongoDbUtils.updateById("student", data.getId().toString(), newDocument); System.out.println("修改条数:" + updateCount); return "redirect:/queryAll"; } @RequestMapping(value = "/query") public String query(int pageNo,ModelMap modelMap){ System.out.println("去的页数:" + pageNo); Bson filter = Filters.ne("_id", "-12"); MongoCursor<Document> result = MongoDbUtils.findByPage("student", filter, null, pageNo, pageSize); List<RequestData> listData = new ArrayList<RequestData>(); int count = 0; System.out.println("--》第" + count +"条"); while (result.hasNext()) { count++; System.out.println("第" + count +"条"); Document document=result.next(); RequestData requestData=new RequestData(); requestData.toRequestData(document); listData.add(requestData); } modelMap.put("listData", listData); return "result"; } }
标签:
原文地址:http://blog.csdn.net/a355586533/article/details/51751040