MongMongo是一个用Java写的ODM框架,使得对MongoDB的操作更加便捷。
MongoMongo努力为Java开发者提供类似于ActiveORM 或者 Hibernate的操作API,并且保留了MongoDB的schemaless,document-based 设计,动态查询,原子修改操作等特性。当然你可以很方便的绕开MongoMongo而使用Java Driver 原生提供的功能。
下面是一段示例代码:
public class Blog extends Document { static { storeIn("blogs"); hasManyEmbedded("articles", new Options(map( Options.n_kclass, Article.class ))); //create index index(map("blogTitle", -1), map(unique,true)); //validate uerName field validate("userName",map(length,map( minimum,5 ))); } //association related public AssociationEmbedded articles() {throw new AutoGeneration();} private String userName; private String blogTitle; } public class Article extends Document { static { belongsToEmbedded("blog", new Options(map( Options.n_kclass, Blog.class ))); } public AssociationEmbedded blog() {throw new AutoGeneration();} private String title; private String body; } public class Usage{ public static void main(String[] args){ Blog blog = Blog.where(map("userName","sexy java")).in(map("id",list(1,2,3))).singleFetch(); blog.articles().build(map("title","i am title","body","i am body")); blog.save(); } }
我们可以看到这是一个典型的充血模型。关联,存储,创建索引,设置别名等操作都简单的在static 块中调用一个函数即可实现。如果你用一些动态语言,你会发现这种方法级声明语法是非常流行,写起来也非常舒服。
其实对于MongoDB相关的框架已经有很多,那么MongoMongo的优势何在?我们简单做个代码对比就一目了然了。
以 SpringData for MongoDB为例,典型的操作如下:
public static void main( String[] args ) { MongoOperations mongoOps = new MongoTemplate(new Mongo(), "mydb"); Person person = new Person(); person.setName("Joe"); person.setAge(10); mongoOps.insert(person); log.info(mongoOps.findOne(new Query(Criteria.where("name").is("Joe")), Person.class)); }
事实上大部分Java ODM都是如此操作Model的。为了构造查询串引入Criteria对象,为了进行查询引入Query对象,查询时还要申明Person对象等。
此外对于索引,别名,校验等设置也较为繁琐和不清晰,通常将将这些信息放在字段的Annotation上,或者设置一些Configuration对象等。
而MongoMongo将大部分对collection的配置都放在Model的代码块中,清晰明了,且便于管理。
相应的MongoMongo代码
public static void main( String[] args ) { Person person = Person.create(map("name","Joe","age",34)); person.save(); log.info(Person.where(map("name","Joe")).singleFetch()); }
MongoMongo的查询也是典型的ORM的操作方式。
Blog blog = Blog.where(map("active",true)).in(map("id",list(1,2,3))).singleFetch();
通常你还可以写成:
public class Blog extends Document { public Criteria active(){ return where(map("active",true)); } }
之后你就可以这样调用:
List<Blog> blogs = Blog.active().where(map("userName","jack")).fetch();
复用性是很高的。
如果你使用过 ActiveORM,那么这样操作MongoDB 你会感觉很顺手。
MongoMongo目前在一些内部小项目中使用。根据需求定制的,所以相对来说没有 ActiveORM 完善,很多细节和功能没有考虑到,但是都可以通过其暴露的MongoDB Driver 解决。
举个例子:
TTUser.collection().find(new BasicDBObject("tagName","cool"));
这个时候你尅通过collection()方法获得DBCollection对象。
当然也希望以后能遇到一个复杂的项目,从而能在该项目中完善MongoMongo.
如果你将它用在自己的项目中,我想肯定能节约相当多的代码。
大家不妨根据 5 steps to run a application on MongoMongo 体验下。
相关推荐
【标题】"jag-express-mongo-mvc-v2:Express Mongo示例应用程序"是一个基于JavaScript的Web开发项目,它展示了如何使用Express框架与MongoDB数据库构建一个模型-视图-控制器(MVC)架构的应用程序。这个项目可能是...
总的来说,Spring Data MongoDB 1.2.0.RELEASE是Spring框架与MongoDB数据库之间的一个强大桥梁,它简化了数据访问层的实现,提高了开发效率,并提供了丰富的功能来满足各种数据操作需求。无论你是构建简单的单体应用...
4. **Mongoose**:在Node.js中操作MongoDB的ODM(Object Document Mapping)库,它提供了强大的数据模型和查询构建器,使得在JavaScript中与MongoDB交互更加简单。 5. **用户注册**:API应该包含创建新用户账户的...
标题“node-express-mongo-api-user-register”表明这是一个基于Node.js、Express框架和MongoDB数据库构建的用户注册API项目。这个API主要用于处理用户的注册请求,可能包括验证用户输入、存储用户信息到数据库等...
MongoModel是针对MongoDB数据库的Ruby对象数据映射(ORM)框架,专为简化Ruby开发者与NoSQL数据库MongoDB之间的交互而设计。它提供了一种面向对象的方式来操作数据,类似于传统的关系型数据库中的ActiveRecord。...
标题中的“Spring+SpringMVC+MongoDB应用”是指一个集成使用了Spring框架、SpringMVC模块以及MongoDB数据库的项目。这个项目旨在利用这些技术栈来构建一个现代的、基于Java的Web应用程序。 首先,Spring是Java领域...
此外,它还支持ODM(对象文档映射)工具,简化数据操作。 通过阅读《MongoDB权威指南中文版》,读者将全面了解MongoDB的基础知识、高级特性以及实际应用案例,为开发高效、可靠的分布式应用程序打下坚实基础。无论...
MongoEngine是Python的一个ODM(Object-Document Mapping)库,它是MongoDB的驱动程序,用于简化对MongoDB数据库的操作。通过MongoEngine,开发者可以使用Python对象来代表数据库文档,使得数据操作更加直观和方便。...
2. **聚合框架**: MongoDB提供了强大的聚合框架,类似于SQL的GROUP BY,可以进行数据汇总、过滤和转换。 3. **复制集**: 通过复制集实现数据冗余,提高可用性和容错性。一个复制集由多个成员组成,数据自动同步。 4....
Mongoose是连接Node.js和MongoDB的ODM(对象数据模型)库,它提供了数据模型定义和操作数据的接口。Mongoose使得与MongoDB数据库的交互变得更加简单,可以处理验证、类型转换、查询构建等功能。 **ES6(ECMAScript ...
3. **Mongoose库**:在Node.js中,通常使用Mongoose作为MongoDB的ODM(对象数据模型)库,它提供了模型和集合之间的映射,简化了数据操作。Mongoose允许定义数据模型,进行数据验证,并提供了丰富的查询API。 在...
在实际的开发中,除了直接使用php-driver外,tp5还支持使用ODM(Object Document Mapping,对象文档映射)工具,如Laravel框架中的Eloquent ORM相似的MongoDB ODM,来进一步简化数据操作。ODM通常会提供更加丰富的...
Ruby的MongoMapper库就是为了让开发者能够更自然地在Ruby对象和MongoDB文档之间进行映射,从而简化数据操作。 MongoMapper的设计理念深受ActiveRecord的影响,它是Ruby on Rails框架中的核心组件,但MongoMapper...
Mongoose 提供了一个强大的对象数据模型(ODM),简化了数据操作和验证。 **API 设计** 构建 RESTful API 遵循一组原则,确保接口清晰、一致且易于使用。通常,API 使用 HTTP 方法(GET、POST、PUT、DELETE)来表示...
JSON 和 MongoDB 在现代 Web 开发中的应用非常广泛,它们提供了高效的数据存储和交换方式。本项目 "JSON-With-Mongo-Persistence" 涉及到如何使用 MongoDB 的持久化层创建一个 JSON API,并将其部署到 Heroku 云平台...
开发者将使用Mongoose库(一个MongoDB的对象数据模型ODM),它为TypeScript提供了类型安全的接口,使得操作数据库更加方便。 **Mongoose** Mongoose是Node.js中用于MongoDB的库,它提供了一种将数据模型化的机制。...
Morphia-0.99.jar则是构建在MongoDB Java驱动程序之上的ODM框架,它的目标是将Java对象映射到MongoDB的文档结构上,使得开发人员可以使用面向对象的方式来处理数据,而不是直接操作JSON文档。Morphia提供了一种简单...
在Node.js环境中,通常会使用Mongoose这样的ODM(对象数据映射)库来与MongoDB进行交互,使得数据操作更加方便。 在描述中提到的"将dev.js文件添加到您的配置文件夹",指的是项目中的开发环境配置文件。这个文件...
在这个"spring MVC morphia mongo 整合的例子"中,你将看到如何将这三个组件集成到一起,创建一个能够利用MongoDB存储数据,并通过Spring MVC处理HTTP请求的Web应用。以下是一些关键知识点: 1. **Spring MVC**:...
7. **面向对象映射(Object-Document Mapping, ODM)**: 在C#中,通常会使用如MongoDB.Driver的ODM框架,如Mongocsharpdriver,它能将对象模型自动映射到MongoDB的文档结构,简化了数据操作。 8. **设计模式**: 在...