MongMongo是一个用Java写的ODM框架,使得对MongoDB的操作更加便捷。
MongoMongo努力为Java开发者提供类似于ActiveORM或者
Hibernate的操作API,并且保留了MongoDB的schemaless,document-based 设计,动态查询,原子修改操作等特性。当然你可以很方便的绕开MongoMongo而使用Java Driver 原生提供的功能。
下面是一段示例代码:
-
publicclassBlogextendsDocument{
-
static{
-
storeIn("blogs");
-
hasManyEmbedded("articles",newOptions(map(
-
Options.n_kclass,Article.class
-
)));
-
-
index(map("blogTitle",-1),map(unique,true));
-
-
validate("userName",map(length,map(
-
minimum,5
-
)));
-
-
}
-
-
publicAssociationEmbeddedarticles(){thrownewAutoGeneration();}
-
privateStringuserName;
-
privateStringblogTitle;
-
}
-
-
publicclassArticleextendsDocument{
-
static{
-
belongsToEmbedded("blog",newOptions(map(
-
Options.n_kclass,Blog.class
-
)));
-
}
-
publicAssociationEmbeddedblog(){thrownewAutoGeneration();}
-
privateStringtitle;
-
privateStringbody;
-
}
-
-
publicclassUsage{
-
publicstaticvoidmain(String[]args){
-
-
Blogblog=Blog.where(map("userName","sexyjava")).in(map("id",list(1,2,3))).singleFetch();
-
blog.articles().build(map("title","iamtitle","body","iambody"));
-
blog.save();
-
}
-
-
}
我们可以看到这是一个典型的充血模型。关联,存储,创建索引,设置别名等操作都简单的在static 块中调用一个函数即可实现。如果你用一些动态语言,你会发现这种方法级声明语法是非常流行,写起来也非常舒服。
其实对于MongoDB相关的框架已经有很多,那么MongoMongo的优势何在?我们简单做个代码对比就一目了然了。
以 SpringData for MongoDB为例,典型的操作如下:
-
publicstaticvoidmain(String[]args)
-
{
-
MongoOperationsmongoOps=newMongoTemplate(newMongo(),"mydb");
-
Personperson=newPerson();
-
person.setName("Joe");
-
person.setAge(10);
-
mongoOps.insert(person);
-
log.info(mongoOps.findOne(newQuery(Criteria.where("name").is("Joe")),Person.class));
-
}
事实上大部分Java ODM都是如此操作Model的。为了构造查询串引入Criteria对象,为了进行查询引入Query对象,查询时还要申明Person对象等。
此外对于索引,别名,校验等设置也较为繁琐和不清晰,通常将将这些信息放在字段的Annotation上,或者设置一些Configuration对象等。
而MongoMongo将大部分对collection的配置都放在Model的代码块中,清晰明了,且便于管理。
相应的MongoMongo代码
-
publicstaticvoidmain(String[]args)
-
{
-
Personperson=Person.create(map("name","Joe","age",34));
-
person.save();
-
log.info(Person.where(map("name","Joe")).singleFetch());
-
}
MongoMongo的查询也是典型的ORM的操作方式。
-
Blogblog=Blog.where(map("active",true)).in(map("id",list(1,2,3))).singleFetch();
通常你还可以写成:
-
publicclassBlogextendsDocument{
-
publicCriteriaactive(){
-
returnwhere(map("active",true));
-
}
-
}
之后你就可以这样调用:
-
List<Blog>blogs=Blog.active().where(map("userName","jack")).fetch();
复用性是很高的。
如果你使用过ActiveORM,那么这样操作MongoDB
你会感觉很顺手。
MongoMongo目前在一些内部小项目中使用。根据需求定制的,所以相对来说没有ActiveORM完善,很多细节和功能没有考虑到,但是都可以通过其暴露的MongoDB
Driver 解决。
举个例子:
-
TTUser.collection().find(newBasicDBObject("tagName","cool"));
这个时候你尅通过collection()方法获得DBCollection对象。
当然也希望以后能遇到一个复杂的项目,从而能在该项目中完善MongoMongo.
如果你将它用在自己的项目中,我想肯定能节约相当多的代码。
大家不妨根据5 steps to run a application on MongoMongo体验下。
分享到:
相关推荐
总的来说,Spring Data MongoDB 1.2.0.RELEASE是Spring框架与MongoDB数据库之间的一个强大桥梁,它简化了数据访问层的实现,提高了开发效率,并提供了丰富的功能来满足各种数据操作需求。无论你是构建简单的单体应用...
【标题】"jag-express-mongo-mvc-v2:Express Mongo示例应用程序"是一个基于JavaScript的Web开发项目,它展示了如何使用Express框架与MongoDB数据库构建一个模型-视图-控制器(MVC)架构的应用程序。这个项目可能是...
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 Data MongoDB支持对象文档映射(ODM),它利用了MongoDB的高性能和灵活性,同时也利用了Spring框架强大的抽象功能,为开发者提供了便捷的数据访问解决方案。 使用Spring Data MongoDB,开发者可以以对象的...
标题中的“Spring+SpringMVC+MongoDB应用”是指一个集成使用了Spring框架、SpringMVC模块以及MongoDB数据库的项目。这个项目旨在利用这些技术栈来构建一个现代的、基于Java的Web应用程序。 首先,Spring是Java领域...
MongoEngine是Python的一个ODM(Object-Document Mapping)库,它是MongoDB的驱动程序,用于简化对MongoDB数据库的操作。通过MongoEngine,开发者可以使用Python对象来代表数据库文档,使得数据操作更加直观和方便。...
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. **设计模式**: 在...
MongoDB是一个分布式文档数据库,适合存储JSON格式的数据,这使得它与JavaScript和Node.js有很好的契合度。MongoDB使用灵活的数据模型,允许快速插入、查询和更新数据。在Node.js中,我们通常使用Mongoose库作为ODM...