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数据库的对比:
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(); }}
- MongoDB的简介和使用(基于JAVA)
- MongoDB的简介和使用
- PHP和MongoDB的简介
- mongodb的简介和应用
- java使用mongoDB和freemarker的注意事项
- 基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用
- MongoDB(一)简介和安装使用
- MongoDB 和 MongoMapper的示例用法简介
- 基于java实现mongodb的数据库连接池
- MongoDB入门简介 java
- mongodb java api和spring的集成使用
- MongoDB安装和简介
- mongoDB 简介和 安装
- 基于tmpfs使用mongoDB
- mongodb基于java开发
- mongodb的介绍和使用
- mongodb的安装和使用
- Mongodb的安装和使用
- javaweb学习总结(四)——Http协议
- 文章标题
- Linux内存管理之mmap详解
- ubuntu下MPICH的安装以及多机环境运行
- CI框架---分页
- MongoDB的简介和使用(基于JAVA)
- TCP/IP协议前期的一知半解
- 腾讯2017暑期实习生编程题
- LCT操作模板
- 营销模式
- 简述ajax的原理,如何实现刷新数据及优点
- javascript实现点名表
- Node.js 错误集锦
- Leetcode 29 Divide Two Integers 位操作的巧妙运用