mongodb有一个类似于orm映射的框架:morphia。其性质就类似于hibernate一样。 但它对mapreduce方法的包装并不是很方便使用,下面示例如下:
public List<WeixinBean> getNewMessage(long updateTime) { //按用户分组,得到最小发送时间和最大更新时间 String map = "function(){emit( this.openID+'#'+this.officalID,{ postTime: this.postTime,updateTime: this.updateTime} ); }"; String function = "function(v){" + "if(res.postTime == 0){" + "res.postTime = v.postTime;" + "}else if(res.postTime > v.postTime){" + "res.postTime = v.postTime;" + "}" + "if(res.updateTime < v.updateTime){" + "res.updateTime = v.updateTime;" + "}" + "}"; String reduce = "function(key,values){" + "var res = { postTime: 0,updateTime: 0}; " + "values.forEach( " + function + " );" + "return res;" + "}"; String outputCollection = "test"; //在执行mapreduce之前,先查询出指定时间范围的数据作为map的输入 BasicDBObject queryForMap = new BasicDBObject(); // if(compareCondition.equals(">")){ //此处特别注意:不要使用put方法,否则查询无效,比如:new BasicDBObject().put("$gt", updateTime) queryForMap.append("updateTime", new BasicDBObject().append("$gt", updateTime)); // } DBCollection weixinCollection = ds.getCollection(WeixinBean.class); MapReduceCommand cmd = new MapReduceCommand( weixinCollection, map, reduce, null, OutputType.INLINE, queryForMap); MapReduceOutput out = weixinCollection.mapReduce(cmd); CommandResult cr = out.getCommandResult(); BasicDBList list = (BasicDBList)cr.get("results"); List<WeixinBean> weixinList = new ArrayList<WeixinBean>(); for(int i = 0 ; i < list.size() ; i++){ BasicDBObject weixinObject = (BasicDBObject)list.get(i); System.out.print(weixinObject.getString("_id")); BasicDBObject value = (BasicDBObject)weixinObject.get("value"); System.out.println(",postTime="+value.getLong("postTime") + ",updateTime="+ value.getLong("updateTime")); WeixinBean wb = new WeixinBean(); String[] userIdArray = weixinObject.getString("_id").split("#"); wb.setId(weixinObject.getString("_id")); // wb.setopenID(userIdArray[0]); // wb.setofficalID(userIdArray[1]); wb.setPostTime(value.getLong("postTime")); wb.setUpdateTime(value.getLong("updateTime")); weixinList.add(wb); } return weixinList; // DBCollection resultColl = out.getOutputCollection(); // DBCursor cursor= resultColl.find(); // while (cursor.hasNext()) { // System.out.println(cursor.next()); // } // MapreduceResults<WeixinBean> res = this.ds.mapReduce(MapreduceType.REDUCE, query, WeixinBean.class, cmd); // MapreduceResults<WeixinBean> res = ds.mapReduce(MapreduceType.INLINE, query, map, reduce, null, null, WeixinBean.class); // // res.setInlineRequiredOptions(WeixinBean.class, ds.getMapper(), new DefaultEntityCache()); // Iterator<WeixinBean> it = res.getInlineResults(); //// Iterator<WeixinBean> it = res.iterator(); // while(it.hasNext()){ // WeixinBean wb = it.next(); // System.out.println(wb.getId()+"-->"+wb.getPostTime()); // } // // System.out.println(res.getCounts()); }
相关推荐
MorphiaEnum示例 显示带有枚举的查询 Morphia 的示例(mongodb/morphia 中的问题 #715)
Morphia MongoDB示例 是的对象/文档映射器。 CI
morphia-0.99.jar 最新版本。
这个压缩文件包含mongo-2.7.3.jar和morphia-0.99.jar是morphia框架必须的jar
Morphia示例Morphia是MongoDB的ODM工具,它允许您将Java类映射到MongoDB文档。 在此处找到对源的解释:
morphia基于mongodb的基本开发
使用Morphia框架操作mongodb
morphia-1.3.2.jar
mongo-2.7.3.jar和morphia-0.99.jar
Morphia/Jackson Java 8 可选示例Morphia (mongoDB) 和 Jackson (JSON) 序列化都可以用来序列化/反序列化新的 Java 8 Optional 类型。 对于 Jackson,您只需要注册 JDK8 模块。 对于 Morphia,您需要为 Optional ...
spring MVC morphia mongo 整合的例子 网上下载的例子 自己调试保证绝对能运行
Morphia操作MongoDB,进行增删查改操作,内附详细代码。
Mongo的ORM框架的学习Morphia
morphia mongo db OR-mapping mongo db再带的CRUD 太麻烦了, 一个不错的框架 类似 Hibernate
NULL 博文链接:https://hogwartsrow.iteye.com/blog/1471846
后续提交放在https://github.com/zdsiyan/watermelon 上, 用eclipse导入该工程需安装m2eclipse,jetty等查件. 另外.settings下的org.eclipse.wst.common.component文件如下: ...</project-modules>
Morphia开发简介.pdf
中断更改:play-morphia 1.5.0将morphia库更新为org.mongodb.morphia 0.107。 请在您的应用程序中将文本从“ com.google.code.morphia”替换为“ org.mongodb.morphia” PlayMorphia概述 PlayMorphia模块一个功能...
Morphia演示 这是一个简单的测试项目,用于显示一些Morphia功能。要求JDK 7+ Gradle您可以在localhost:27017上使用独立的MongoDB服务器,或者如果该服务器不可用,则测试代码将启动嵌入式MongoDB进程。入门在基本...
这是一个演示示例,它使用 Morphia API 演示了针对 mongoDB 的 Spring 身份验证 此示例使用带有 Gradle 插件的 STS IDE 开发。 要运行该应用程序,请按照下列步骤操作: 1-创建名为“authDB”的 MongodDB 数据库2-...