MongoDB的简介和使用(基于JAVA)

来源:互联网 发布:类似哔咔哔咔的软件 编辑:程序博客网 时间:2024/04/30 11:48

MongoDB的简介和使用(基于JAVA)

1. MongoDB的相关概念

① MongoDB 是一个面向文档的数据库系统。文档数据库区别于传统的其他数据库,它是用来管理文档的。传统数据库中,信息被分割成离散的数据段,而在文档数据库中,文档是处理信息的基本单位,一个文档相当于关系数据库中的一条记录。文档数据库不同于文件系统,也不同于关系数据库(不提供对参照完整性和分布事务的支持)。② MongoDB中,文档是对数据的抽象,表现形式威BSON(Binary JSON)。MongoDB 把BSON作为数据存放的磁盘中。③ MongoDB 的特点:
  • mongo是c++实现的,性能优越速度快。
  • 所有实体都是在首次使用时创建。
  • 没有严格的事务特性,但是它保证任何一次数据变更都是原子性的。
  • 也没有固定的数据模型。直接存取BSON,更加灵活,可以在文档中插入复杂数据类型。开发者在使用 MongoDB时无须预定义关系数据库中”表”等数据库对象。实用性更强,大大提升开发进度。
  • MongoDB目前不支持join操作,需要复杂查询的应用不建议使用MongoDB。
  • MongoDB 与 MySQL数据库的对比:
MySQL MongoDB 表 集合 行 文档 列 成员 主键 Object id (自动生成)

2. 安装和使用MongoDB

①. http://www.mongodb.org/ 官网下载安装包,傻瓜化安装。

②.MongoDB安装完成后,进去安装目录, 此时发现只有Server文件夹。 手动新建data文件夹和log文件夹,分别用于存放数据库文件和日志文件。
这里写图片描述

③.手动新建mongo.config配置文件,并复制下面两行代码。分别是data文件夹绝对路径和log文件夹绝对路径。
dbpath=C:\Software\MongoDB\data
logpath=C:\Software\MongoDB\log\mongo.log

④. 进入MangoDB安装目录的bin目录下,启动MongoDB,如下图:
mongod.exe –config C:\Software\MongoDB\mongo.config
这里写图片描述

⑤. 启动完成后,重新打开一个dos窗口,进行对MongoDB的操作。刚才的窗口如果关闭,则MangoDB 服务停止。

常用语法:
db.user.insert({“id”: “001”, “name”: “pancong”});
db.user.drop(); // 删除user集合
db.user.find(); // 查询所有
db.user.find({ “age” : { $gt: 20 } } ); // greater than : field > value

3. 使用Java对MongoDB进行操作(需要引入MongoDB驱动包和Junit)

Mongo mongo = new Mongo(); //创建了一个MongoDB的数据库连接对象,它默认连接到当前机器的localhost地址,端口是27017
DB db = mongo.getDB(“demo”); //获取一个demo数据库,如果不存在自动创建
DBCollection users = db.getCollection(“users”); //获取集合,相当于传统数据库中的表

MongoDBTest

package com.mongoDB.demo;import java.net.UnknownHostException;import java.util.Date;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBCursor;import com.mongodb.Mongo;import com.mongodb.MongoException;import com.mongodb.util.JSON;public class MongoDBTest {    public static void main(String[] args) {        try {            Mongo mongo = new Mongo();            System.out.println("DataBases:");            for(String DBName:mongo.getDatabaseNames()){                System.out.println(DBName);            }            DB demoDB = mongo.getDB("demoDB");            DBCollection users = demoDB.getCollection("users");            //查询集合中的数据 DBCursor可以看作传统数据库中的游标            DBCursor cur = users.find();            while(cur.hasNext()){                System.out.println(cur.next());            }            System.out.println(cur.count());            System.out.println(cur.getCursorId());            System.out.println(JSON.serialize(cur));            User user = new User("hw"+new Date(), (int)(Math.random()*50));            users.insert(user);        } catch (UnknownHostException e) {            e.printStackTrace();        } catch (MongoException e) {            e.printStackTrace();        }    }}

MongoDBDemo

package com.mongoDB.demo;import java.net.UnknownHostException;import java.util.ArrayList;import java.util.Date;import java.util.List;import org.junit.After;import org.junit.Before;import org.junit.Test;import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBCursor;import com.mongodb.DBObject;import com.mongodb.Mongo;import com.mongodb.MongoException;public class MongoDBDemo {    //连接对象    Mongo mongo = null;    //数据库    DB db = null;    //集合    DBCollection users = null;    //初始化数据库    @Before    public void init() {        try {            mongo = new Mongo();        } catch (UnknownHostException e) {            e.printStackTrace();        } catch (MongoException e) {            e.printStackTrace();        }        //获取demo数据库,没有会自动创建        db = mongo.getDB("demo");        //获取users Collection, 没有会自动创建        users = db.getCollection("user");    }    @After    public void close(){        if(mongo != null)            mongo.close();        //连接对象          mongo = null;        //数据库          db = null;        //集合         users = null;    }    //查询所有    @Test    public void findAll(){        System.out.println("查询所有数据");        DBCursor cur = users.find();        while(cur.hasNext()){            System.out.println(cur.next());        }        System.out.println("现有记录:"+cur.count());    }    @Test    public void addOne(){        System.out.println("添加一条记录");        User user = new User("hw"+new Date(), (int)(Math.random()*50));        users.save(user);        this.findAll();    }    @Test    public void addList(){        System.out.println("添加多条记录");        List<DBObject> userList = new ArrayList<>();        for(int i=0; i< 5; i++){            userList.add(new User("hw"+new Date(), (int)(Math.random()*50)));        }        users.insert(userList);        this.findAll();    }    @Test    public void delete(){        System.out.println("删除年龄大于20岁的");        users.remove(new BasicDBObject("Age", new BasicDBObject("$gt",20)));        this.findAll();    }    @Test    public void findSort(){        System.out.println("按照年龄排序");        DBCursor cur = users.find().sort(new BasicDBObject("Age",-1));        while(cur.hasNext()){            System.out.println(cur.next());        }    }    @Test    public void update(){        System.out.println("修改,年龄低于20岁的改为50岁");        users.update(new BasicDBObject("Age",19), new BasicDBObject("$set", new BasicDBObject("Age",100)));//      db.user.update({"Age":19},{"$set":{"Age":100}},false,false); 选择只更新更新的第一条数据//      db.user.update({"Age":19},{"$set":{"Age":100}},false,true); 所有满足条件的数据都更新        this.findAll();    }}
0 0
原创粉丝点击