- 浏览: 65415 次
- 性别:
- 来自: 北京
-
最新评论
-
wucaifang819787:
你好!麻烦问下不知道哪个图片行不行的:http://dl.it ...
struts2源码浅析(四) -
ChenXzh:
高手,佩服得五体投地
关于struts2报There is no Action mapped for namespace / and action name xxx_xxx
Mango ---- 一个非常简单的操作mongodb的小工具,使用java语言,基于mongodb的java driver包。
其主要的灵感来自于Jongo 项目,这是一个非常有创意的工具,将mongodb shell编程扩展到了java语言包内。mango主要做的工作,是重写了Jongo的一些方法,使其更符合我们在开发中的需求,另外与spring相结合,将配置参数等记录在资源文件中进行管理,并适当的做了一些扩展。
新手上路
step 1 -- 配置
资源文件 driver.property
#database url ---> host:port url= user= password= #see mongoOptions.class in mongodb java driver slaveOk= connectionsPerHost= minPoolsSize= threadsAllowedToBlockForConnectionMultiplier= maxWaitTime= connectTimeout= socketTimeout= autoConnectRetry= safe=
配置文件 spring.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="collection" class="org.mango.MangoCollection" init-method="init" destroy-method="close"> <property name="mango"> <ref bean="mango"/> </property> <property name="collection" value="test"/> <!-- there needs the full path of the model class , it's not a good idea , but I can't find a better way to solve this --> <property name="clazz" value="org.mango.Mazhiyuan"/> </bean> <bean id="mango" class="org.mango.Mango" init-method="init" destroy-method="close"> <property name="driver"> <ref bean="driver"/> </property> </bean> <bean id="driver" class="org.mango.MangoDriver" init-method="init" destroy-method="close"> <property name="db" value="local"/> <property name="driver" ref = "config"/> </bean> <bean id="config" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="location"> <value>classpath:driver.properties</value> </property> </bean> </beans>
资源文件主要是记录了mongodb的相关配置和mongodb的连接串,若是Replication模式,则以逗号分开,端口号一定要有。
spring配置文件,依次注册了MangoDriver,这个类加载配置项并初始化了数据库,MangoCollection只暴露给用户的client类,这个类需要要操作的mongodb collection和该collection对应的model类。
step 2 Model 类
model类最好继承与Madel类,虽然这是一个可选的条件,但强烈建议这样做,Madel类非常简单,只是含有一个ObjectsId来对应mongodb中的_id字段
step 3 启动
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring.xml"); MangoCollection collection = (MangoCollection) context.getBean("collection");
得到MangoCollection之后,就可以进行一系列的操作了
Mazhiyuan mazhiyuan = collection.findOne().as(); System.out.println(mazhiyuan.getName()); Mazhiyuan mazhiyuan = collection.findOne("{age:3}").as(); List<Mazhiyuan> mazhiyuans = collection.find("{age:3}").asList(); Iterable<Mazhiyuan> mazhiyuans = collection.find("{age:3}").as(); List<Mazhiyuan> mazhiyuans = collection.find("{age:3}").field("{age:0}").skip(10).sort("{age:1}").limit(10).asList();
这些语句和mongodb shell的语言非常的类似,注意asList是返回List对象,而as方法返回的是Iterable对象
collection.update("{name: 'mzy1'}").with("{$inc: {age: 1}}"); collection.update("{name: 'mzy1'}").upsert().multi().with("{$inc: {age: 1}}"); collection.update("{name: 'mzy1'}").upsert().with("{$inc: {age: 1}}");
更新操作也是一样的
collection.save(new Mazhiyuan("mzy", 23)); collection.save("{name:'mzy',age:23}");
插入操作
collection.remove("{name: 'mzy'}"); collection.remove(new ObjectId("4c...e"));
删除操作
需要说明的是这些操作返回都是boolean类型,可以判断操作是否成功。
目前,这个项目还没有完全开发完成,对group这样的操作,我本人理解也不够深刻,所以在理解group之后再将这个补充到mango中,另外,mango还没有经受过足够的测试,可能在使用中会有一些问题,请给我发邮件,或是提交bug报告。如果你有好的建议,也请告知我。
源码地址:https://github.com/mazhiyuan/mango-spring
发表评论
-
JAVA多线程-厕所问题
2012-11-22 11:55 2030在http://my.oschina.net/xpbug/bl ... -
第八章 最大自序列和
2012-11-01 20:29 945第八章的问题是常见的---最大自序列和 的问题 书中提 ... -
第二章 旋转字符串的思考
2012-10-26 16:09 914编程珠玑第二章旋转字符串,abcdefg向左旋转3位,变为de ... -
Mongdb的upsert出现E11000 duplicate key errors的错误分析
2012-10-25 17:36 9275昨日上线的系统,今天查日志时发现有不少E11000 dupli ... -
浅出Apache Cxf
2012-03-05 20:14 0由于业务需要,开放了系统的 Web Se ... -
struts2源码浅析(四)
2011-10-19 17:15 1652接上一篇讲了filter后,现在request到了action ... -
struts2源码浅析(三)
2011-10-19 16:50 1633接上篇http://mazhiyuan.iteye.com/b ... -
struts2源码浅析(二)
2011-10-19 16:34 2322接上一篇http://mazhiyuan.iteye.com/ ... -
struts2源码浅析(一)
2011-10-19 16:18 18121. Struts2架构图 请求首先通过Filter ... -
struts2.1权威指南-笔记
2010-12-19 22:36 11501.struts 1.x 和 struts 2.x的 ... -
Hibernate学习总结4---对象状态
2010-12-10 16:14 1021session 的几个主要方法: 1,save方法和persi ... -
Hibernate学习总结3 --配置文件
2010-12-10 16:10 1041如果不希望使用默认的hibernate.cfg.xml 文件作 ... -
Hibernate 学习总结一
2010-12-10 14:54 934引入: 模型不匹配(阻 ... -
HF servlet&jsp 前6章要点总结
2010-11-21 11:58 972今天有时间把前6章主要讲servlet的内容坐下总结。好了,开 ... -
jquery源码分析之属性篇
2010-11-20 20:09 2024jquery提供了一些快捷函 ... -
HF servelt&jsp 定制标记开发 要点总结
2010-11-13 11:41 13831.标记文件使用一个页 ... -
bean相关标准动作总结+复习
2010-11-07 23:22 8201.<jsp:useBean>动作会定义一个变量, ... -
HF servlet&jsp ---include 指令和动作元素
2010-11-07 23:02 8581.include的2种方式 include多用于网站中可重用 ... -
HF servlet&jsp 总结—无脚本的JSP
2010-11-04 18:26 9008无脚本的JSP 8.1在JSP页面使用动作元素 <js ... -
HF servlet&jsp 总结—使用JSP
2010-11-02 17:37 842初看HF系列的servlet&jsp前6章主讲的ser ...
相关推荐
<artifactId>mongo-java-driver <version>4.2.3 ``` 2. **示例代码**:以下是一个简单的Java示例,演示如何连接到MongoDB数据库并插入一条记录: ```java import com.mongodb.MongoClient; import ...
MongoDB是一种流行的开源、分布式文档数据库,用于处理大量的数据并提供高性能、高可用性和可扩展性。在Visual Studio 2005(VS2005)中开发应用程序时,可以使用特定的驱动程序来连接和操作MongoDB数据库。本篇文章...
MongoDB 是一个流行的开源、分布式文档数据库,以其灵活性、高性能和易用性而备受青睐。在C#开发环境中,MongoDB 提供了丰富的驱动程序,使得开发者能够方便地与数据库进行交互。本教程将深入探讨如何使用C#进行...
MongoDB 是一个流行的开源、分布式文档数据库系统,它以其灵活性、可扩展性和高性能而受到开发者的青睐。PHP 的 MongoDB 扩展则提供了原生的 PHP 类和方法,使得开发者可以轻松地进行数据存储、查询和操作。 首先,...
MongoDB 是一个流行的开源、分布式文档数据库,设计用于处理大量数据并提供高可用性和高性能。在C#中,我们可以利用MongoDB的官方驱动程序来与MongoDB进行交互,执行诸如查询和插入等基本操作。本篇文章将深入探讨...
MongoDB 是一个流行的开源、分布式文档型数据库,广泛应用于数据存储和实时分析。在这个场景中,我们关注的是如何使用 JavaScript 在 MongoDB 中构建一个省市县联动的数据库,这通常涉及到地理信息系统的数据组织和...
- ** Mango 查询**:CouchDB 2.0 引入了Mango查询,这是一个更强大的查询API,类似于MongoDB的查询语法。 - **冲突解决**:由于CouchDB支持多副本,可能会出现文档冲突。开发者需要编写逻辑来处理这些冲突。 ...