心血来潮,看了看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入门与开发范例 #### 一、MongoDB与NoSQL运动 MongoDB作为NoSQL运动中的一个重要成员,它的出现和发展标志着数据库技术领域的新篇章。NoSQL(Not Only SQL)运动强调使用非关系型数据存储,以解决传统...
### MongoDB入门知识点详解 #### 一、NoSQL简介与MongoDB概述 - **NoSQL**:NoSQL(Not Only SQL)是一种非关系型数据库管理系统的总称,它突破了传统关系型数据库在处理大规模数据时的限制,尤其适用于大数据及高...
### MongoDB入门到精通知识点概述 #### 一、MongoDB简介 MongoDB是一种开源的文档数据库,采用JSON格式存储数据,并提供了高性能、高可用性和自动扩展的能力。它属于NoSQL数据库的一种,非常适合处理大规模数据和...
在这个“MongoDB入门”主题中,我们将深入探讨MongoDB的基础知识、安装与配置、数据模型、查询操作以及高级特性。 首先,让我们了解MongoDB的基本概念。MongoDB以其“集合”(Collections)和“文档”(Documents)...
小白也可入门学习,如果有一些MySQL、Js经验最佳,Java代码案例部分需要有一定的Java开发基础。 3、课程亮点 系统的学习MongoDB从入门到进阶,掌握现在火爆的NoSQL技术之一。 选择MongoDB的原因及其优势 MongoDB单机...
本书《mongodb入门》是一本旨在帮助初学者快速学习MongoDB基本用法的入门小书。它适合那些希望在短时间内掌握MongoDB核心概念和操作的读者。作者Karl Seguin是一位拥有丰富技术背景的开发者,其经历跨越多个领域和...
MongoDB 是一个流行的开源NoSQL数据库系统,专为处理大量数据和高可扩展性而设计。MongoDB 使用文档型的数据模型,支持BSON...无论是在Java或其他编程语言环境中,MongoDB都是开发现代Web应用和大数据处理的有力工具。
此外,它还可以与各种开发框架和工具如Mongoose(Node.js)、PyMongo(Python)、MongoDB Compass(图形界面)等配合使用。 本教程的.chm文件提供了更详尽的指导,包括实例和练习,帮助读者深入理解MongoDB的各个...
SpringBoot整合MongoDB是现代Java开发中常见的技术组合,尤其对于快速构建轻量级、高可伸缩性的Web应用来说。MongoDB是一个流行的NoSQL数据库,以其灵活性、高性能和易于扩展性著称,而SpringBoot则简化了Java应用的...
书中涵盖了MongoDB的基础知识、高级特性、性能优化以及实际应用案例等内容,是一本非常适合初学者入门和进阶学习的参考书。 ### 关键知识点详解 #### 1. MongoDB基础知识 - **文档模型**:MongoDB使用BSON(Binary...
【Python高级开发课程 高级教程】中的第07部分主要涵盖了Python操作MongoDB数据库的知识。MongoDB是一种流行的NoSQL数据库系统,它以文档存储为主,适合处理大规模、非结构化或半结构化的数据。在Python中,我们通常...
《深入云计算(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 ...
MongoDB是一种流行的开源文档数据库系统,它属于NoSQL数据库类型,以其灵活性、可扩展性和高性能而受...提供的笔记和代码是学习的良好起点,通过不断探索和实践,可以掌握MongoDB的精髓,为实际项目开发打下坚实基础。
#### 五、MongoDB快速入门 - **启动数据库**: - 命令行方式启动。 - 使用配置文件启动。 - Daemon方式启动。 - 各种启动参数的含义和用法。 - **停止数据库**: - 使用Control-C命令。 - 使用`shutdownServer...