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

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">

classpath:driver.properties

资源文件主要是记录了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 mazhiyuans = collection.find("{age:3}").asList();

Iterable mazhiyuans = collection.find("{age:3}").as();

List 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

分享到:

2012-07-20 21:53

浏览 1611

评论

mongodb java 开源_开源的Mongodb java client -- mango发布相关推荐

  1. java 精通_你真的精通Java吗?

    简历和自我介绍上经常能够读到"精通Java"这样的话,有人和我说,精通Java的人太多了,精通Java已经不能算亮点.不能给自己加分了.可是事实真是这样吗? 对于语言的学习,我有一 ...

  2. 精通java益处_你真的精通Java吗?

    简历和自我介绍上经常能够读到"精通Java"这样的话,有人和我说,精通Java的人太多了,精通Java已经不能算亮点.不能给自己加分了.可是事实真是这样吗? 对于语言的学习,我有一 ...

  3. java书籍_还搞不定Java多线程和并发编程面试题?你可能需要这一份书单!

    点击蓝色"程序员书单"关注我哟 加个"星标",每天带你读好书! ​ 在介绍本书单之前,我想先问一下各位读者,你们之前对于Java并发编程的了解有多少呢.经过了1 ...

  4. java 汇编_大话+图说:Java 汇编指令——只为让你懂

    原标题:大话+图说:Java 汇编指令--只为让你懂 前言 随着Android开发技术不断被推到新的高度,对于Android程序员来讲越来越需要具备一些对深入的基础性的技术的理解,比如说Java汇编指 ...

  5. java风控_【A0538】[java视频教程]金融信贷风控的机器学习实战视频教程 it教程

    Java视频教程名称:金融信贷风控的机器学习实战视频教程  java自学   风控视频教程   it教程 7 E" b1 z7 `/ _& G百度网盘下载链接:8 }, g4 o5 ...

  6. 我的世界java路径_我的世界java路径在哪 路径有误怎么设置

    我的世界的各个版本中java都是十分重要的东西,许多玩家都会遇到Java路径有误的问题,并且不知道该如何解决,其实Java的路径这个东西在每个人的电脑中都是不太一样的,一般以你安装时的位置为准,在这里 ...

  7. 如何创建第一个java程序_创建第一个java程序

    开发环境:ubuntu 10.04 + eclipse 方法一:打开eclipse编译器,选择 File->New->Java project,输入工程名称,点击finish,在工程目录中 ...

  8. 常用的java虚拟机_带你了解 JAVA虚拟机 面试必备

    Java运行时数据区: Java虚拟机在执行Java程序的过程中会将其管理的内存划分为若干个不同的数据区域,这些区域有各自的用途.创建和销毁的时间,有些区域随虚拟机进程的启动而存在,有 些区域则是依赖 ...

  9. vs java调试_基于VSCode的Java编程语言的构建调试环境搭建指南(作业三)

    1.Java编译环境的搭建(CodeRunner) CodeRunner的强大之处在于它支持许多语言,只要选好语言,就直接可以写代码,即开即用的模式.时至今日,Code Runner已经有了超过400 ...

  10. java相册_精致小巧的java相册制作方法

    本文实例为大家分享了java相册制作方法,供大家参考,具体内容如下 注: 1)html上的图片是静态指定的.当更新了新的图片时必须手工更新.所以使用Servlet读取本地images中的所有图片,动态 ...

最新文章

  1. python自带的库有哪些_python常用的内置库
  2. SAP MM Movement Type 503的使用
  3. 原理+实践,Kafka MirrorMaker使用与性能调优全解析
  4. Server 2008 Core/服务器核心环境安装SQL 2008 方法
  5. unity实用技术:色盲玩家也能享受好的游戏体验
  6. linux下clone一直运行,Linux中vgimportclone命令起什么作用呢?
  7. [COCI2017-2018#5] Karte
  8. 浅说 Rewrite规则简介
  9. 一段话系列-正则基础
  10. java 网络字节序转主机字节序_Linux下查看网络连接
  11. 亲密关系-【有效表达】-如何完善自己的表达思路?
  12. Android 8.1 SystemUI之状态栏、下拉菜单通知、导航栏分析(一)
  13. FastDFS上传下载原理解析
  14. VB操作access数据库
  15. linux 温度测试软件,linux上安装cpu温度监控软件
  16. 进程冲突造成的深信服ssl ***客户端登录异常问题
  17. html 导航栏设计,在网页中设计导航菜单的三个原则(附案例)
  18. 第五章运算符表达式和语句
  19. 那些10万变百万的矿工,都是从选对挖矿币种开始的!
  20. 51单片机c语言延时计算软件,51单片机精确延时程序大集合+初值计算工具

热门文章

  1. oracle是delete可以加并行吗,提高Oracle DELETE性能的策略
  2. java里上下文对象,java-在百里香模板中的Web上下文对象上发出...
  3. python实现matlab_用matlab和python实现符号运算
  4. 配置阿里云docker加速与云镜像配置
  5. mysql中sql语句使用_mysql数据库中用到sql语句
  6. 前端 datatable 居中_Midway Serverless 如何让阿里前端提效 50%?
  7. mysql gis空间数据库_GIS开发:使用空间数据库
  8. package.json的进阶
  9. 重修 mongoDB 系列(一) 配置环境
  10. ACM_基础知识(二)