`
mazhiyuan
  • 浏览: 65415 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

开源的Mongodb java client -- mango发布

阅读更多

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

 

0
4
分享到:
评论

相关推荐

    MangoDB的概要介绍与分析

    &lt;artifactId&gt;mongo-java-driver &lt;version&gt;4.2.3 ``` 2. **示例代码**:以下是一个简单的Java示例,演示如何连接到MongoDB数据库并插入一条记录: ```java import com.mongodb.MongoClient; import ...

    vs2005的mongodb驱动

    MongoDB是一种流行的开源、分布式文档数据库,用于处理大量的数据并提供高性能、高可用性和可扩展性。在Visual Studio 2005(VS2005)中开发应用程序时,可以使用特定的驱动程序来连接和操作MongoDB数据库。本篇文章...

    MongoDB C#

    MongoDB 是一个流行的开源、分布式文档数据库,以其灵活性、高性能和易用性而备受青睐。在C#开发环境中,MongoDB 提供了丰富的驱动程序,使得开发者能够方便地与数据库进行交互。本教程将深入探讨如何使用C#进行...

    php5.6mongo扩展

    MongoDB 是一个流行的开源、分布式文档数据库系统,它以其灵活性、可扩展性和高性能而受到开发者的青睐。PHP 的 MongoDB 扩展则提供了原生的 PHP 类和方法,使得开发者可以轻松地进行数据存储、查询和操作。 首先,...

    mangodb.rar

    MongoDB 是一个流行的开源、分布式文档数据库,设计用于处理大量数据并提供高可用性和高性能。在C#中,我们可以利用MongoDB的官方驱动程序来与MongoDB进行交互,执行诸如查询和插入等基本操作。本篇文章将深入探讨...

    用于在mongodbz中生成省市县联动的数据库

    MongoDB 是一个流行的开源、分布式文档型数据库,广泛应用于数据存储和实时分析。在这个场景中,我们关注的是如何使用 JavaScript 在 MongoDB 中构建一个省市县联动的数据库,这通常涉及到地理信息系统的数据组织和...

    CouchDB,Python

    - ** Mango 查询**:CouchDB 2.0 引入了Mango查询,这是一个更强大的查询API,类似于MongoDB的查询语法。 - **冲突解决**:由于CouchDB支持多副本,可能会出现文档冲突。开发者需要编写逻辑来处理这些冲突。 ...

Global site tag (gtag.js) - Google Analytics