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()); }
相关推荐
MongoDB是一种流行的NoSQL数据库系统,它以JSON格式存储数据,具有高度的可扩展性和灵活性。...通过研究这些示例,开发者可以快速上手Morphia,并将其应用到自己的项目中,提升MongoDB开发的效率和代码的可维护性。
在Java开发中,Morphia是一个优秀的对象数据映射(ODM)框架,它简化了与MongoDB之间的交互,使得开发者可以像操作传统关系型数据库那样操作文档数据库。本文将深入探讨如何使用Morphia框架来操作MongoDB。 首先,...
本示例“MorphiaEnumExample”着重展示了如何在Morphia中处理枚举类型(enum)的数据,以及进行相关的查询操作。这个问题是在mongodb/morphia项目的GitHub仓库中被讨论的,问题编号为#715。 首先,让我们了解什么是...
morphia-0.99.jar 最新版本。
MongoDB是一个流行的开源、分布式文档数据库,而Morphia是一个Java对象数据映射(Object-Document Mapping, ODM)框架,用于简化与MongoDB的交互。在这个压缩文件中,我们有两个重要的jar包:mongo-2.7.3.jar和...
标题中的“morphia.jar”和“mongo.jar”指的是两个与MongoDB数据库操作相关的Java库文件。MongoDB是一个流行的开源、分布式文档型数据库,而Morphia则是Java开发人员用来操作MongoDB的一个对象数据映射(ODM)框架...
7. **RESTful API设计**:示例可能展示了如何使用Spring MVC创建RESTful API,通过HTTP方法(GET, POST, PUT, DELETE)来对应MongoDB的操作。 8. **错误处理和日志记录**:Spring MVC提供了异常处理机制,可以定制...
"Morphia-example-1:Java中使用Morphia ODM和Spring的示例项目" 是一个基于Java开发的项目,其主要目的是展示如何在Java应用程序中使用Morphia对象数据映射(ODM)库来操作MongoDB数据库,并结合Spring框架进行集成...
morphia基于mongodb的基本开发
**标题:“Morphia和MongoDB学习总结<三>”** 在本文中,我们将深入探讨Morphia,一个用于Java的MongoDB对象数据映射(ODM)库,以及它如何与MongoDB数据库进行交互。Morphia简化了在MongoDB中存储和检索Java对象的...
5. **示例代码** - 创建 `User` 实体类,并使用 `@Entity` 注解标记: ```java @Entity("users") public class User { @Id private ObjectId id; private String name; private String address; private ...
不过,在给出的例子中,没有使用Morphia的注解,这可能意味着这个示例主要展示了如何配置Spring Data MongoDB,而没有展示Morphia的具体用法。 要充分利用Morphia,我们需要在实体类中使用诸如`@Entity`、`@Id`等...
morphia-1.3.2.jar
Morphia/Jackson Java 8 可选示例Morphia (mongoDB) 和 Jackson (JSON) 序列化都可以用来序列化/反序列化新的 Java 8 Optional 类型。 对于 Jackson,您只需要注册 JDK8 模块。 对于 Morphia,您需要为 Optional ...
Morphia 是一个 Java 框架,它为 MongoDB 提供了对象数据映射(Object Data Mapping,简称 ODM)功能,使得开发者可以更方便地在 Java 对象与 MongoDB 文档之间进行转换。本篇文章将详细介绍如何使用 Morphia 和 ...
以下是一个简单的示例,展示了如何使用 Morphia 连接 MongoDB 并进行数据操作: ```java import org.mongodb.Mongo; import org.mongodb.MongoClient; import org.mongodb.gridfs.GridFS; import org.mongodb....
【MongoDB与Morphia简介】 MongoDB是一款流行的NoSQL数据库系统,以其灵活的数据模型、高可用性和可扩展性而受到广泛欢迎。Morphia是针对MongoDB的一个Java持久层框架,它提供了简单易用的API,使得开发者能够方便地...
morphia mongo db OR-mapping mongo db再带的CRUD 太麻烦了, 一个不错的框架 类似 Hibernate
【Morphia开发简介】 Morphia是一款针对MongoDB数据库的Java对象关系映射(ORM)框架,它的主要目标是让Java开发者能够以面向对象的方式处理数据库操作,从而减轻数据库设计的复杂性,使开发者能更专注于业务逻辑。...
**Morphia:一个NoSQL的ORM框架** Morphia是一个强大的Java ORM(对象关系映射)框架,专为MongoDB数据库设计。它允许开发者使用Java对象来操作数据库,消除了与传统SQL数据库交互时所需的SQL语法,使开发更加便捷...