心血来潮,看了看mongoDB 的相关内容,写了个入门级的demo.用来备忘!
一:如何安装mongoDB服务
1. 下载mongodb的windows版本,有32位和64位版本,根据系统情况下载,下载地址:http://www.mongodb.org/downloads 我这里的是 32 的
2.解压缩至F:/mongodb即可(这个位置 可以随便,就像平时安装软件解压一样没有特殊的要求)
3.创建数据库文件的存放位置,比如E:/mongodb/data/db。启动mongodb服务之前需要必须创建数据库文件的存放文件夹,否则命令不会自动创建,而且不能启动成功。默认文件夹路径为c:/data/db.使用系统默认文件夹路径时,启动服务无需加--dbpath 参数说明,但文件夹还要手工创建
4.打开cmd命令行,进入D:/mongodb/bin目录,输入如下的命令启动mongodb服务:
D:\Program Files\mongodb\bin>mongod.exe --dbpath D:/mongodb/data/db (此处注意是mongod.exe 不是 mongo.exe )
输入命令后屏幕上会显示 如下内容表示启动mongo服务成功了,如果要关闭该服务只需要关闭显示这些内容的窗口就行了。
Fri Aug 09 09:14:44 [initandlisten] MongoDB starting : pid=3708 port=27017 dbp
h=D:/mongodb/data/db 32-bit
** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of da
** see http://blog.mongodb.org/post/137788967/32-bit-limitations
** with --dur, the limit is lower
Fri Aug 09 09:14:44 [initandlisten] db version v1.8.5, pdfile version 4.5
Fri Aug 09 09:14:44 [initandlisten] git version: 403c8dadcd56f68dcbe06013ecbfa
7b32a22ac
Fri Aug 09 09:14:44 [initandlisten] build sys info: windows sys.getwindowsvers
n(major=6, minor=0, build=6002, platform=2, service_pack='Service Pack 2') BOO
_LIB_VERSION=1_42
Fri Aug 09 09:14:44 [initandlisten] waiting for connections on port 27017
Fri Aug 09 09:14:44 [websvr] web admin interface listening on port 28017
Fri Aug 09 09:15:12 [initandlisten] connection accepted from 127.0.0.1:3059 #1
Fri Aug 09 09:15:12 [conn1] query zh.$cmd ntoreturn:1 command: { count: "testC
llection", query: {} } reslen:64 138ms
Fri Aug 09 09:15:12 [conn1] end connection 127.0.0.1:3059
Fri Aug 09 09:15:35 [initandlisten] connection accepted from 127.0.0.1:3060 #2
Fri Aug 09 09:15:35 [conn2] end connection 127.0.0.1:3060
Fri Aug 09 09:16:15 [initandlisten] connection accepted from 127.0.0.1:3061 #3
Fri Aug 09 09:16:15 [conn3] end connection 127.0.0.1:3061
Fri Aug 09 09:21:37 [initandlisten] connection accepted from 127.0.0.1:3085 #4
Fri Aug 09 09:21:37 [conn4] end connection 127.0.0.1:3085
Fri Aug 09 09:29:39 [initandlisten] connection accepted from 127.0.0.1:3124 #5
Fri Aug 09 09:29:39 [conn5] end connection 127.0.0.1:3124
到这里 就表示启动服务成功了,当然你下次开机或者关闭了这个窗口的时候 ,需要使用就必须再次使用启动服务的命令。
二:入门开发:
在进行开发之前需要导入包 :mongo-2.10.1.jar
我这里有jar包,案例代码,pdf学习手册。
接下来可以进行开发了。
package com.cyou.mongdb.test; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.mongodb.BasicDBObject; import com.mongodb.BasicDBObjectBuilder; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.Mongo; public class MongoUser { private Mongo mongo = null; private DB db = null; private DBCollection conllection = null; /** * init:初始化mongo. <br/> * * @author zhangheng * @param host 主机 * @param port 端口号 * @since JDK 1.6 */ public void init(String host, int port, String dbName, String collectionName){ try { if (mongo == null) { // 是使用本地地址和默认端口号相当于//mg = new Mongo("localhost", 27017) mongo = new Mongo(); } } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 获取temp DB;如果默认没有创建,mongodb会自动创建 db = mongo.getDB(dbName); // 获取users DBCollection;如果默认没有创建,mongodb会自动创建 conllection = db.getCollection(collectionName); } /** * destroy:销毁mongo对象. <br/> * * @author zhangheng * @since JDK 1.6 */ public void destroy(){ if (mongo != null) { mongo.close(); mongo = null; db = null; conllection = null; // 通知垃圾回收机制回收 System.gc(); } } public DBObject getBDbObject(){ return null; } /** * add:添加一个记录. <br/> * * @author zhangheng * @since JDK 1.6 */ //通过BasicDBObject的方式向mongo中插入数据 public void addToBasicDBObject(BasicDBObject document,DBCollection dbCollection){ dbCollection .insert(document); } //通过BasicDBObjectBuilder的方式向mongo中插入数据 public void addToBasicDBObjectBuilder(BasicDBObjectBuilder document,DBCollection dbCollection){ dbCollection .insert(document.get()); } //通过Map的方式向mongo中插入数据 public void addToMap(Map documentMap,DBCollection dbCollection){ dbCollection .insert(new BasicDBObject(documentMap)); } /** * cursorIterator:根据游标的位置输出遍历的集合. <br/> * * @author zhangheng * @param cur * @since JDK 1.6 */ public void cursorIterator(DBCursor cur){ while (cur.hasNext()) { System.out.println(cur.next()); } } /** * queryAll:查询集合中的所有元素). <br/> * * @author zhangheng * @param dbCollection * @return * @since JDK 1.6 */ public DBCursor queryAll(DBCollection dbCollection){ DBCursor cur = dbCollection.find(); return cur; } /** * getCount:获得文档中的记录条数. <br/> * * @author zhangheng * @param collection * @return * @since JDK 1.6 */ public long getCount(DBCollection collection){ return collection.count(); } /** * remove:根据DBCollection对象从集合中删除对象. <br/> * * @author zhangheng * @param dbObject 纪录 * @param dbCollection 集合名 * @since JDK 1.6 */ public void remove(DBObject dbObject, DBCollection dbCollection){ dbCollection.remove(dbObject); } //更新 public void update(BasicDBObject frontDBObject,BasicDBObject afartDBObject,DBCollection dbCollection){ dbCollection.update(frontDBObject,afartDBObject); } // 第三个参数-----如果数据库不存在,是否添加 // 第四个参数-----多条修改false public void motify(BasicDBObject frontDBObject, BasicDBObject afartDBObject, DBCollection dbCollection,boolean isExist,boolean allMotify){ dbCollection.update(frontDBObject, afartDBObject, isExist, allMotify); } /** * find:根据DBCollection查找. <br/> * * @author zhangheng * @param dbObject * @param dbCollection * @return * @since JDK 1.6 */ public DBCursor getDocument(BasicDBObject dbObject, DBCollection dbCollection){ return dbCollection.find(dbObject); } //获得第一条记录 public DBObject getFirstDocument(DBCollection dbCollection){ return dbCollection.findOne(); } /** * setReadOnly:设置数据库是否为可读. <br/> * * @author zhangheng * @param db 数据库 * @param bo true/false * @since JDK 1.6 */ public void setReadOnly(DB db, boolean bo){ db.setReadOnly(bo); } public Mongo getMongo(){ return mongo; } public DB getDb(String dbName){ return db; } public DBCollection getUsers(){ return conllection; } }
接下来我在这个类中建立里 main方法 用来测试。
添加的方法 ,把数据添加到数据库中
/** * main:进行一些测试. <br/> * * @author zhangheng * @param args * @since JDK 1.6 */ public static void main(String[] args){
try { mongoTest = new MongoUser(); mongoTest.init(null, 0, "zh", "testConllection"); System.out.println("集合中文档的数量"+mongoTest.getCount(mongoTest.conllection)); System.out.println("=========================================================="); //添加 BasicDBObject document = new BasicDBObject(); document.put("name", "zhang"); document.put("age", 20); document.put("sex", "famale"); document.put("isStudents", true); mongoTest.addToBasicDBObject(document, mongoTest.conllection); BasicDBObjectBuilder document1 = new BasicDBObjectBuilder (); document1.append("name", "li").append("age", 22).append("sex", "male").append("isStudents", true); mongoTest.addToBasicDBObjectBuilder(document1, mongoTest.conllection); Map<String ,Object> document2 = new HashMap<String,Object>(); document2.put("name", "zhang"); document2.put("age", 21); document2.put("sex", "famale"); document2.put("isStudents", true); mongoTest.addToMap(document2, mongoTest.conllection); } catch (Exception e) { } finally { mongoTest.destroy(); } }
接下来分别是 查找 修改 删除 的测试在进行这些测试之前我 前调用了显示 全部记录的方法可以清晰的看见操作的结果。
//输出所有的数据信息 DBCursor dbc = mongoTest.queryAll(mongoTest.conllection); System.out.println("输出所有记录:"); mongoTest.cursorIterator(dbc);
查找的方法有一般有这几种,还有的没有列出来。
//查找 //获得第一个位置上的记录 DBObject getFirstOne = mongoTest.getFirstDocument(mongoTest.conllection); System.out.println("获得第一条记录"+getFirstOne.toString()); System.out.println("==================="); //根据指定的条件查询相应的值 此处为查询name 为 li 的记录 相当于sql中where 列= **; BasicDBObject query1 = new BasicDBObject(); query1.put("name", "li"); DBCursor dbCursor1 =mongoTest.getDocument(query1, mongoTest.conllection); while(dbCursor1.hasNext()){ System.out.println("根据条件查询 ---1:"+dbCursor1.next()); } System.out.println("==================="); //查询 介于 年龄在20 和 22 的 记录,相当于sql中的 where 条件中的in BasicDBObject query2 = new BasicDBObject(); List list = new ArrayList(); list.add(22); list.add(20); query2.put("age", new BasicDBObject("$in",list)); DBCursor dbCursor2 =mongoTest.getDocument(query2, mongoTest.conllection); while(dbCursor2.hasNext()){ System.out.println("根据条件查询 ---2"+dbCursor2.next()); } System.out.println("==================="); //根据大于小于查询 ">" (大于号) "$gt" "<"(小于号)"$lt" //查询年龄大于21的值 BasicDBObject query3 = new BasicDBObject(); query3.put("age", new BasicDBObject("$gt",21)); DBCursor dbCursor3 =mongoTest.getDocument(query3, mongoTest.conllection); while(dbCursor3.hasNext()){ System.out.println("根据条件查询 ---3"+dbCursor3.next()); } //查询年龄大于20 小于 22的值 BasicDBObject query4 = new BasicDBObject(); query4.put("age", new BasicDBObject("$gt",20).append("$lt", 22)); DBCursor dbCursor4 =mongoTest.getDocument(query4, mongoTest.conllection); while(dbCursor4.hasNext()){ System.out.println("根据条件查询 ---4"+dbCursor4.next()); }
修改
System.out.println("==================="); //更新 //如果是更新整条数据的话,需要把所有的属性都要更新。如果其中的某个属性不写 的话 就是认为去掉该属性 BasicDBObject update1 =new BasicDBObject(); update1.put("name", "lily"); update1.put("age", 5); update1.put("sex", "male"); update1.put("isStudents", false); mongoTest.update(new BasicDBObject().append("name", "lily"), update1,mongoTest.conllection); //在原来属性的基础添加值 更新 使用 "$inc" 类似于大于小于的比较 BasicDBObject update2 = new BasicDBObject().append("$inc", new BasicDBObject().append("age", 7)); mongoTest.update(new BasicDBObject().append("name", "lily"), update2,mongoTest.conllection); //利用set 改变某一属性的 值 BasicDBObject update3 = new BasicDBObject().append("$set", new BasicDBObject().append("isStudents", true)); mongoTest.update(new BasicDBObject().append("name", "lily"), update3,mongoTest.conllection);
删除 删除的方法写的比较简单。因为跟查找很像。$lt 表示 小于 前面说过
//删除 方法和 查找方法极为类似 BasicDBObject remove1 = new BasicDBObject(); remove1.put("age", new BasicDBObject("$lt",20)); mongoTest.remove(remove1, mongoTest.conllection);
删除数据库中所有的记录,我用的方法是 查出来所有记录逐一删除
//先查询出所有的内容然后 删除 DBCursor dbc1 = mongoTest.queryAll(mongoTest.conllection); while(dbc1.hasNext()){ mongoTest.remove(dbc1.next(), mongoTest.conllection); }
这里上传的附件限制大小,具体内容在http://download.csdn.net/detail/zhangxxheng/5899041
相关推荐
资源名称:MongoDB入门经典内容简介:本书采用直观、循序渐进的方法,讲解了如何设计、实施和优化NoSQL数据库,如何存储和管理数据,以及如何执行数据分片和复制等任务。全书共24章。适合对NoSQL以及MongoDB感兴趣的...
小白也可入门学习,如果有一些MySQL、Js经验最佳,Java代码案例部分需要有一定的Java开发基础。 3、课程亮点 系统的学习MongoDB从入门到进阶,掌握现在火爆的NoSQL技术之一。 选择MongoDB的原因及其优势 MongoDB单机...
此文档是mongoDB入门级教程。讲述mongoDB的简介、安装、管理和开发方面的知识。
《深入云计算(MongoDB管理与开发实战详解)》系统全面的介绍了MongoDB开发、管理、维护和性能优化等方方面面。详细而深入,对MongoDB的开发和管理方法进行了详细的讲解,也对MongoDB的工作机制进行了深入的探讨。注重...
API Graphql com NodeJs , Graphql-yoga , MongoDB入门级实用程序,ESTOémeu primeiro projeto usando NOSQL, primaryiro projeto feito consultando manuais de referencias e dicas apenas。 依存关系 yarn ...
【Python高级开发课程 高级教程】课程列表 01 Python语言开发要点详解....07 Python操作MongoDB数据库.pptx 08 Python多线程 多进程开发.pptx 09 Python爬虫框架Scrapy实战.pptx 10 Python Web开发框架Django实战.pptx
《深入云计算(MongoDB管理与开发实战详解)》系统全面的介绍了MongoDB开发、管理、维护和性能优化等方方面面。详细而深入,对MongoDB的开发和管理方法进行了详细的讲解,也对MongoDB的工作机制进行了深入的探讨。注重...
Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅... 本文档是Spring框架高级源码笔记+Spring Boot data mongoDB中文文档 资源合集
MongoDB具有模式灵活、可以高速写入数据、可以存储TB级数据、查询速度快等优点,在大型企业中有广泛的应用。熟悉并掌握MongoDB的设计和使用方法,是开发人员的技能!
用于MongoDB,Node.js和Vue.js的入门级存储库,具有基于Docker的本地环境。 堆栈用于MongoDB,Node.js和Vue.js的入门级存储库,具有基于Docker的本地环境。 安装运行堆栈$ docker-compose up从浏览器访问堆栈启动器...
本书的两位作者均来自开发并支持开源数据库MongoDB的公司10gen。数据库开发人员可将此书作为参考指南,系统管理员可以从本书中找到高级配置技巧,其他用户可以了解一些基本概念和用例。你会发现,将数据组织成自包含...
里面包含了JDBC,Data JPA,Data Redis,Data Mongodb,Data Rabbit,Data ElasticSearch等等。合集中的每一项都是针对不同数据存储做的简化封装,使我们在操作不同数据库时,以最简洁的代码完成需求功能。 Spring...
功能类似于MongoDB的API轻量级,仅3KB(缩小并压缩)无依赖项易于配置支持良好的查询选择器($ gt,$ in,...)和选项(跳过) ,限制,排序)自动缓存在内存中入门安装npm install --save storagedb2将storagedb...
基于Node.js,MongoDB和Express的博客系统项目介绍基于Node.js + MongoDB + Express技术开发的入门级博客系统:一起学Node.js案例源码。技术选型初步技术: Node.js前端技术: jQuery的语义UI模块介绍models :存放...
网盘文件永久链接 ...11爬虫开发阶段爬虫基础-MongoDB数据库-爬虫Scrapyt框架和案例 12-人工智能阶段数据分析 13-人工智能阶段机器学习-深度学习 14-人工智能阶段:-机器学习-深度学习-实战项目 markdown编揭器
第9 章 Spring Boot 企业级开发 340 9.1 安全控制Spring Security 340 9.1.1 Spring Security 快速入门 340 9.1.2 Spring Boot 的支持 347 9.1.3 实战 348 9.2 批处理Spring Batch 362 9.2.1 Spring Batch 快速入门 ...
第9 章 Spring Boot 企业级开发 340 9.1 安全控制Spring Security 340 9.1.1 Spring Security 快速入门 340 9.1.2 Spring Boot 的支持 347 9.1.3 实战 348 9.2 批处理Spring Batch 362 9.2.1 Spring Batch 快速入门 ...
俗话说,麻雀虽小,五脏俱全,虽然是单服框架,但是也是包罗了很多游戏服务器开发必用的技术要点,方便部署和使用,可以说是从入门到高级的一个学习过程,也是通往分布式服务器开发的阶梯。本项目简单易用,稍加修改...
MyQEE是一个开源、快速、优雅的轻量级PHP框架,支持HMVC模式,建立在PHP5.2基础之上,支持多项目管理开发,数据库内置自动主从分离功能,MySQL支持事务操作功能并且支持自动嵌套功能,多驱动设计灵活适应各种环境。...
这是带有ExpressJS + MongoDB + PUG的全栈Web应用样板项目。 这不是一个现成的项目。 我这样做是为了创建一个最新的入门套件,其中包含除业务逻辑之外的所有重要功能(用户注册,登录,oauth,配置文件等)。 这...