http://blogread.cn/it/article/4348?f=wb (MongoDB)

安装: 
1)下载MongoDB数据库(这里使用Windows 32 bit版)

http://downloads.mongodb.org/win32/mongodb-win32-i386-1.2.4.zip

然后解压到一个目录(这里是D:\\MongoDB), 
并且在D:\\MongoDB目录中建个\"data\\db\"目录用来存放数据文件。 
(注意:很多文档中说\"C:\\data\\db\"目录是缺省目录,实际上是不起作用的)

2)下载MongoDB数据库的Java驱动程序

http://github.com/downloads/mongodb/mongo-java-driver/mongo-1.3.jar 
然后把mongo-1.3.jar放到D:\\MongoDB目录

完成上面两步就算完成安装任务了,够简单吧。

启动MongoDB数据库服务器:

D:\\>cd D:\\MongoDB 
D:\\MongoDB>bin\\mongod --dbpath data\\db 
能看到下面这张图就算是成功了: 

下面是一个CRUD例子,虽然简单,不过也算是覆盖了大多数核心内容了, 
一边看代码一边看注释吧,挺简单的。

import java.util.*;
import com.mongodb.*; //com.mongodb包类似于java.sql,大多数与数据库相关的类都在这里 public class MongoTest {
public static void out(Object o) {
System.err.println(o);
}
public static void out() {
System.err.println();
} public static void main(String[] args) throws Exception {
//Mongo是与java.sql.Connection同等级别的概念,
//默认是链接到127.0.0.1:27017/test,
//见getConnectPoint()的输出结果,其中27017是端口号,test是数据库名
Mongo mongo = new Mongo();
out(\"mongo.getConnectPoint() = \"+mongo.getConnectPoint()); //查看所有的数据库名
for(String dbName : mongo.getDatabaseNames()) {
out(\"dbName = \"+dbName);
} //DB类用来表示一个数据库,如果数据库不存在则创建一个
DB db = mongo.getDB( \"test\" ); //查看所有的Collection名
for(String collectionName : db.getCollectionNames()) {
out(\"collectionName = \"+collectionName);
} out(); //DBCollection类用来存放对象,类似数据库表的概念
DBCollection coll = db.getCollection(\"testCollection\"); //插入10个User对象到coll
//插入DBCollection中的对象必需实现DBObject接口(见User类的注释)
for(int i=1; i<=10; i++) {
User user = new User();
user.setName(\"user \"+(10+i));
user.setAge(10+i);
user.setDate(new Date()); coll.insert(user);
} findAll(coll); //查找出coll中的所有对象并打印输出 //查找出第一条记录,在内部会自动转换成User类型
coll.setObjectClass(User.class);
User user = (User)coll.findOne();
out(\"user.name=\"+user.getName());
out(\"user.age=\"+user.getAge());
out(\"user.getDate()=\"+user.getDate());
coll.setObjectClass(BasicDBObject.class); //还原最初的对象类型 out(); user.setAge(100);
coll.save(user); //保存更新
findAll(coll); //确认第一条记录的\"Age\"是否变成100了? coll.remove(user); //删除第一条记录 findAll(coll); //查找年纪大于等于15小于等于18的记录(15<=age<=18)
//(查询条件的组合方式很嗦,这方面就没sql方便)
BasicDBObject query = new BasicDBObject();
//注意这里的\"Age\"第一个字母要大写,如果把User类替换成UserNoReflection类就用小写,
//这是因为ReflectionDBObject类的内部实现在截取setter和getter方法的\"set\"和\"get\"前缀后
//没有进行大小写转换,比如\"setAge\"得到的key值就是\"Age\"
query.put(\"Age\", new BasicDBObject(\"$gte\", 15).append(\"$lte\", 18)); DBCursor cur = coll.find(query);
while(cur.hasNext()) {
out(cur.next());
} out(); //跳过前面3条记录,然后显示总共5条记录
cur = coll.find().skip(3).limit(5);
while(cur.hasNext()) {
out(cur.next());
} coll.drop(); //删除coll这个DBCollection
} public static void findAll(DBCollection coll) {
DBCursor cur = coll.find();
while(cur.hasNext()) {
out(cur.next());
}
out();
} //插入DBCollection中的java对象必需实现DBObject接口,
//ReflectionDBObject实现了DBObject接口,在内部是采用反射来完成的
public static class User extends ReflectionDBObject {
private String name;
private int age;
private Date date; public void setName(String name) {
this.name = name;
} public String getName() {
return name;
} public void setAge(int age) {
this.age = age;
} public int getAge() {
return age;
} public void setDate(Date date) {
this.date = date;
} public Date getDate() {
return date;
}
} //如果不想用反射的方式,又不想手工实现DBObject接口的方法,
//可以直接继承BasicDBObject,但是需要做额外的工作,
//就像下面这样:
public static class UserNoReflection extends BasicDBObject {
private String name;
private int age;
private Date date; public void setName(String name) {
this.name = name; super.put(\"name\", name);
} public String getName() {
return name;
} public void setAge(int age) {
this.age = age; super.put(\"age\", age);
} public int getAge() {
return age;
} public void setDate(Date date) {
this.date = date; super.put(\"date\", date);
} public Date getDate() {
return date;
} public Object put(String key, Object v) {
if(key.equals(\"name\")) name = (String)v;
else if(key.equals(\"age\")) age = (Integer)v;
else if(key.equals(\"date\")) date = (Date)v; return super.put(key, v);
}
}
}

把MongoTest.java文件放到D:\\MongoDB目录

编译: 
javac -cp D:\\MongoDB\\mongo-1.3.jar D:\\MongoDB\\MongoTest.java

运行: 
java -cp D:\\MongoDB\\mongo-1.3.jar;D:\\MongoDB MongoTest

Douyu也支持MongoDB了,比上面的代码还简洁

//对应上面的User类(或UserNoReflection类),
//在Douyu中如下所示,不需要任何setter和getter代码 import douyu.mvc.Model; @Model
public class User {
private String name;
private int age;
private Date date;
}

然后在conf/server.java中配置一个MongoDB的数据源(跟普通的关系型数据库类似)

最后是Controller

import java.util.Date;
import douyu.mvc.Controller;
import douyu.mvc.ModelManager; @Controller
public class MongoTest {
public void index(ModelManager modelManager) {
User user = new User();
//下面三个setter方法虽然没有在User类中声明,
//但是编译器在编译User类时发现User类带有@Model,就会自动生成setter、getter方法
user.setName(\"user 10\");
user.setAge(10);
user.setDate(new Date()); modelManager.insert(user); user.setAge(20);
modelManager.save(user); modelManager.delete(user);
//....
}
}

MongoDB的安装与CRUD(JAVA)的更多相关文章

  1. MongoDB的安装与设置MongoDB服务

    Mongo DB 是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐.Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB ...

  2. MongoDB的安装 转

    第1章 MongoDB的安装 (黎明你好原创作品,转载请注明) 1.1 MongoDB简介 MongoDB是一个基于分布式文件存储的数据库开源项目.由C++语言编写,旨在为WEB应用提供可护展的高性能 ...

  3. Mongodb快速入门之使用Java操作Mongodb

    [IT168 专稿]在上一篇文章中,我们学习了Mongodb的安装和初步使用,在本文中,将学习如何使用Java去编程实现对Mongodb的操作. HelloWorld程序 学习任何程序的第一步,都是编 ...

  4. MongoDB本地安装与启用(windows )

    MongoDB的安装与MongoDB服务配置 Mongo DB 是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐.Mongo DB很好的实现了 ...

  5. mongodb的安装使用,window和centos环境

    官网:https://www.mongodb.org/downloads 版本:最终稳定版 (mongodb-win32-x86_64-2008plus-ssl-3.2.6-signed.msi 绿色 ...

  6. python操作三大主流数据库(7)python操作mongodb数据库①mongodb的安装和简单使用

    python操作mongodb数据库①mongodb的安装和简单使用 参考文档:中文版:http://www.mongoing.com/docs/crud.html英文版:https://docs.m ...

  7. MongoDB+MongoVUE安装及入门

    前言及概念 据说nodejs和mongoDB是一对好基友,于是就忍不住去学习了解了一下MongoDB相关的一些东西, 那么,MongoDB是什么?这里的五件事是每个开放人员应该知道的: MongoDB ...

  8. MongoDB的安装与使用

    MongoDB是一款NoSql数据库.NoSql数据库叫非关系型数据库,NoSql的全名Not only sql.是为了解决高并发.高可用.高可扩展,以及大数据存储等一系列问题而产生的数据库解决方案. ...

  9. python数据库-MongoDB的安装(53)

    一.NoSQL介绍 1.什么是NoSQL NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL". NoSQL,指的是非关系型的数据库.NoSQL有时也称 ...

随机推荐

  1. win8.1禁用和去除SkyDrive任务栏图标方法

    Win+R打开运行,输入gpedit.msc确定,打开本地组策略编辑器. 依次定位到:计算机配置-管理模板-Windows组件-OneDrive,双击阻止使用 OneDrive 执行文件储存.

  2. DICOM:Ubuntu14环境下安装dcm4chee+oviyam2.1

    背景: 之前博文DICOM:开源DICOM服务框架DCM4CHEE安装中曾介绍过在Windows7环境下安装部署dcm4chee.近期公司项目需要与部署到Linux系统的远端基于dcm4chee框架的 ...

  3. 算法训练 Torry的困惑

    问题描述 Torry从小喜爱数学.一天,老师告诉他,像2.3.5.7……这样的数叫做质数.Torry突然想到一个问题,前10.100.1000.10000……个质数的乘积是多少呢?他把这个问题告诉老师 ...

  4. calico for kubernetes

    (这一篇中很多错误,勿参考!) The reference urls: https://github.com/kubernetes/kubernetes/blob/master/docs/gettin ...

  5. 【SpringMVC】SpringMVC系列2之@RequestMapping 映射约束请求

    @RequestMapping 映射约束请求 2.1.映射请求URL Spring MVC 使用 @RequestMapping 注解为控制器指定可以处理哪些 URL 请求,在控制器的类定义及方法定义 ...

  6. 《ASP.NET1200例》统计网站访问量源代码

    void Application_Start(object sender, EventArgs e)     {        //在应用程序启动时运行的代码        int count=0;  ...

  7. 2.设计包含 min 函数的栈[StackWithMinValue]

    [题目]: 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素.要求函数min.push以及pop的时间复杂度都是O(1). [解法一]: 使用一个辅助栈来保存最小元素,其栈顶元素为当前栈 ...

  8. canvas API ,通俗的canvas基础知识(五)

    前几期讲的都是路径图形的绘图,这节我们要讲的是如何在画布上操作图片,因为图形画不了漂亮妹子(画图高手忽略不计),想画美女怎么办?跟我来: 想要在画布中插入一张图片,我们需要的方法是这位大侠: draw ...

  9. 如何在Ubuntu下安装”.deb“、”.bin“、”.tar.gz“、”.tar.bz2“格式的软件包!

    今天在Ubuntu11.10中安装Google chrome浏览器是遇到了问题,下载好的“.deb”格式的安装文件google-chrome-stable.deb双击后或者右键快捷菜单选择 Synap ...

  10. touch详解

    touch事件 前言 一个触屏网站到底和传统的pc端网站有什么区别呢,交互方式的改变首当其冲.例如我们常用的click事件,在触屏设备下是如此无力. 手机上的大部分交互都是通过touch来实现的,于是 ...