`
lifaming15
  • 浏览: 64200 次
  • 来自: ...
文章分类
社区版块
存档分类

MongoDB ODM 框架MongoMongo-简化你的数据存储

 
阅读更多

MongMongo是一个用Java写的ODM框架,使得对MongoDB的操作更加便捷。

MongoMongo努力为Java开发者提供类似于ActiveORM或者 Hibernate的操作API,并且保留了MongoDB的schemaless,document-based 设计,动态查询,原子修改操作等特性。当然你可以很方便的绕开MongoMongo而使用Java Driver 原生提供的功能。

下面是一段示例代码:

  1. publicclassBlogextendsDocument{
  2. static{
  3. storeIn("blogs");
  4. hasManyEmbedded("articles",newOptions(map(
  5. Options.n_kclass,Article.class
  6. )));
  7. //createindex
  8. index(map("blogTitle",-1),map(unique,true));
  9. //validateuerNamefield
  10. validate("userName",map(length,map(
  11. minimum,5
  12. )));
  13. }
  14. //associationrelated
  15. publicAssociationEmbeddedarticles(){thrownewAutoGeneration();}
  16. privateStringuserName;
  17. privateStringblogTitle;
  18. }
  19. publicclassArticleextendsDocument{
  20. static{
  21. belongsToEmbedded("blog",newOptions(map(
  22. Options.n_kclass,Blog.class
  23. )));
  24. }
  25. publicAssociationEmbeddedblog(){thrownewAutoGeneration();}
  26. privateStringtitle;
  27. privateStringbody;
  28. }
  29. publicclassUsage{
  30. publicstaticvoidmain(String[]args){
  31. Blogblog=Blog.where(map("userName","sexyjava")).in(map("id",list(1,2,3))).singleFetch();
  32. blog.articles().build(map("title","iamtitle","body","iambody"));
  33. blog.save();
  34. }
  35. }

我们可以看到这是一个典型的充血模型。关联,存储,创建索引,设置别名等操作都简单的在static 块中调用一个函数即可实现。如果你用一些动态语言,你会发现这种方法级声明语法是非常流行,写起来也非常舒服。

其实对于MongoDB相关的框架已经有很多,那么MongoMongo的优势何在?我们简单做个代码对比就一目了然了。

以 SpringData for MongoDB为例,典型的操作如下:

  1. publicstaticvoidmain(String[]args)
  2. {
  3. MongoOperationsmongoOps=newMongoTemplate(newMongo(),"mydb");
  4. Personperson=newPerson();
  5. person.setName("Joe");
  6. person.setAge(10);
  7. mongoOps.insert(person);
  8. log.info(mongoOps.findOne(newQuery(Criteria.where("name").is("Joe")),Person.class));
  9. }

事实上大部分Java ODM都是如此操作Model的。为了构造查询串引入Criteria对象,为了进行查询引入Query对象,查询时还要申明Person对象等。

此外对于索引,别名,校验等设置也较为繁琐和不清晰,通常将将这些信息放在字段的Annotation上,或者设置一些Configuration对象等。

而MongoMongo将大部分对collection的配置都放在Model的代码块中,清晰明了,且便于管理。

相应的MongoMongo代码

  1. publicstaticvoidmain(String[]args)
  2. {
  3. Personperson=Person.create(map("name","Joe","age",34));
  4. person.save();
  5. log.info(Person.where(map("name","Joe")).singleFetch());
  6. }

MongoMongo的查询也是典型的ORM的操作方式。

  1. Blogblog=Blog.where(map("active",true)).in(map("id",list(1,2,3))).singleFetch();

通常你还可以写成:

  1. publicclassBlogextendsDocument{
  2. publicCriteriaactive(){
  3. returnwhere(map("active",true));
  4. }
  5. }

之后你就可以这样调用:

  1. List<Blog>blogs=Blog.active().where(map("userName","jack")).fetch();

复用性是很高的。

如果你使用过ActiveORM,那么这样操作MongoDB 你会感觉很顺手。

MongoMongo目前在一些内部小项目中使用。根据需求定制的,所以相对来说没有ActiveORM完善,很多细节和功能没有考虑到,但是都可以通过其暴露的MongoDB Driver 解决。

举个例子:

  1. TTUser.collection().find(newBasicDBObject("tagName","cool"));

这个时候你尅通过collection()方法获得DBCollection对象。

当然也希望以后能遇到一个复杂的项目,从而能在该项目中完善MongoMongo.

如果你将它用在自己的项目中,我想肯定能节约相当多的代码。

大家不妨根据5 steps to run a application on MongoMongo体验下。

分享到:
评论

相关推荐

    spring-data-mongodb1.2.0

    总的来说,Spring Data MongoDB 1.2.0.RELEASE是Spring框架与MongoDB数据库之间的一个强大桥梁,它简化了数据访问层的实现,提高了开发效率,并提供了丰富的功能来满足各种数据操作需求。无论你是构建简单的单体应用...

    jag-express-mongo-mvc-v2:Express Mongo示例应用程序

    【标题】"jag-express-mongo-mvc-v2:Express Mongo示例应用程序"是一个基于JavaScript的Web开发项目,它展示了如何使用Express框架与MongoDB数据库构建一个模型-视图-控制器(MVC)架构的应用程序。这个项目可能是...

    node-mongo-registration-login-api

    4. **Mongoose**:在Node.js中操作MongoDB的ODM(Object Document Mapping)库,它提供了强大的数据模型和查询构建器,使得在JavaScript中与MongoDB交互更加简单。 5. **用户注册**:API应该包含创建新用户账户的...

    node-express-mongo-api-user-register

    标题“node-express-mongo-api-user-register”表明这是一个基于Node.js、Express框架和MongoDB数据库构建的用户注册API项目。这个API主要用于处理用户的注册请求,可能包括验证用户输入、存储用户信息到数据库等...

    Ruby-MongoModel针对MongoDB的RubyORM框架兼容Rails3

    MongoModel是针对MongoDB数据库的Ruby对象数据映射(ORM)框架,专为简化Ruby开发者与NoSQL数据库MongoDB之间的交互而设计。它提供了一种面向对象的方式来操作数据,类似于传统的关系型数据库中的ActiveRecord。...

    Spring-data-mongodb使用手册中文最新版本

    Spring Data MongoDB支持对象文档映射(ODM),它利用了MongoDB的高性能和灵活性,同时也利用了Spring框架强大的抽象功能,为开发者提供了便捷的数据访问解决方案。 使用Spring Data MongoDB,开发者可以以对象的...

    Spring+SpringMVC+MongoDB应用

    标题中的“Spring+SpringMVC+MongoDB应用”是指一个集成使用了Spring框架、SpringMVC模块以及MongoDB数据库的项目。这个项目旨在利用这些技术栈来构建一个现代的、基于Java的Web应用程序。 首先,Spring是Java领域...

    mongo-blog:使用Flask,MongoEngine和MongoDB构建的简单博客应用程序

    MongoEngine是Python的一个ODM(Object-Document Mapping)库,它是MongoDB的驱动程序,用于简化对MongoDB数据库的操作。通过MongoEngine,开发者可以使用Python对象来代表数据库文档,使得数据操作更加直观和方便。...

    node-express-mongo-api:带有Node.js,Express和MongoDB的REST API的入门项目

    Mongoose是连接Node.js和MongoDB的ODM(对象数据模型)库,它提供了数据模型定义和操作数据的接口。Mongoose使得与MongoDB数据库的交互变得更加简单,可以处理验证、类型转换、查询构建等功能。 **ES6(ECMAScript ...

    express-mongo-app

    3. **Mongoose库**:在Node.js中,通常使用Mongoose作为MongoDB的ODM(对象数据模型)库,它提供了模型和集合之间的映射,简化了数据操作。Mongoose允许定义数据模型,进行数据验证,并提供了丰富的查询API。 在...

    tp5(thinkPHP5)操作mongoDB数据库的方法

    在实际的开发中,除了直接使用php-driver外,tp5还支持使用ODM(Object Document Mapping,对象文档映射)工具,如Laravel框架中的Eloquent ORM相似的MongoDB ODM,来进一步简化数据操作。ODM通常会提供更加丰富的...

    Ruby-MongoMapper针对Mongo的一个Ruby对象映射器

    Ruby的MongoMapper库就是为了让开发者能够更自然地在Ruby对象和MongoDB文档之间进行映射,从而简化数据操作。 MongoMapper的设计理念深受ActiveRecord的影响,它是Ruby on Rails框架中的核心组件,但MongoMapper...

    node-express-mongo-API

    Mongoose 提供了一个强大的对象数据模型(ODM),简化了数据操作和验证。 **API 设计** 构建 RESTful API 遵循一组原则,确保接口清晰、一致且易于使用。通常,API 使用 HTTP 方法(GET、POST、PUT、DELETE)来表示...

    JSON-With-Mongo-Persistence:使用 Mongo Persistence Layer 创建一个 JSON api 并让它在 Heroku 上运行

    JSON 和 MongoDB 在现代 Web 开发中的应用非常广泛,它们提供了高效的数据存储和交换方式。本项目 "JSON-With-Mongo-Persistence" 涉及到如何使用 MongoDB 的持久化层创建一个 JSON API,并将其部署到 Heroku 云平台...

    Typescript-Express-Mongo-Example:使用 typescript 构建 express api 的简单起点

    开发者将使用Mongoose库(一个MongoDB的对象数据模型ODM),它为TypeScript提供了类型安全的接口,使得操作数据库更加方便。 **Mongoose** Mongoose是Node.js中用于MongoDB的库,它提供了一种将数据模型化的机制。...

    morphia所用到的jar包

    Morphia-0.99.jar则是构建在MongoDB Java驱动程序之上的ODM框架,它的目标是将Java对象映射到MongoDB的文档结构上,使得开发人员可以使用面向对象的方式来处理数据,而不是直接操作JSON文档。Morphia提供了一种简单...

    fullstack-react-node-express-mongo-boilerplater:我的项目的样板代码设置

    在Node.js环境中,通常会使用Mongoose这样的ODM(对象数据映射)库来与MongoDB进行交互,使得数据操作更加方便。 在描述中提到的"将dev.js文件添加到您的配置文件夹",指的是项目中的开发环境配置文件。这个文件...

    spring MVC morphia mongo 整合的例子

    在这个"spring MVC morphia mongo 整合的例子"中,你将看到如何将这三个组件集成到一起,创建一个能够利用MongoDB存储数据,并通过Spring MVC处理HTTP请求的Web应用。以下是一些关键知识点: 1. **Spring MVC**:...

    C#MongoDB-具有通用CRUD的多态集合

    7. **面向对象映射(Object-Document Mapping, ODM)**: 在C#中,通常会使用如MongoDB.Driver的ODM框架,如Mongocsharpdriver,它能将对象模型自动映射到MongoDB的文档结构,简化了数据操作。 8. **设计模式**: 在...

    REST-API-节点-Express-Mongo-

    MongoDB是一个分布式文档数据库,适合存储JSON格式的数据,这使得它与JavaScript和Node.js有很好的契合度。MongoDB使用灵活的数据模型,允许快速插入、查询和更新数据。在Node.js中,我们通常使用Mongoose库作为ODM...

Global site tag (gtag.js) - Google Analytics