转自:http://zhangxxheng.iteye.com 转载请注明出
心血来潮,看了看mongoDB 的相关内容,写了个入门级的demo.用来备忘!
一:如何安装mongoDB服务
1.下载mongodb的windows版本,有32位和64位版本,根据系统情况下载,下载地址:htp://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);
- }
- 这里上传的附件限制大小,具体内容在<a style="font-size: 1em; line-height: 1.5;" href="http://download.csdn.net/detail/zhangxxheng/5899041">http://download.csdn.net/detail/zhangxxheng/5899041</a>
相关推荐
MongoDB入门指南 MongoDB是一种开源的文档类型数据库,它具有高性能、可扩展、高可用、自动收缩等特性。MongoDB能够避免传统的ORM映射,从而有助于开发。MongoDB中的每一行记录就是一个文档,它是一个由键值对构成...
Mongo DB ,是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式,备受当前IT从业人员的青睐。Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB中 每一条记录都是一个Document对象。...
首先,我们从"MongoDB入门教程"开始。MongoDB采用的是键值对存储方式,数据以JSON格式(BSON)存储,这使得数据的读写更加自然和高效。MongoDB支持丰富的查询语法,包括字段选择、条件操作、排序和分组,为开发者...
### MongoDB入门知识点详解 #### 一、NoSQL简介与MongoDB概述 - **NoSQL**:NoSQL(Not Only SQL)是一种非关系型数据库管理系统的总称,它突破了传统关系型数据库在处理大规模数据时的限制,尤其适用于大数据及高...
根据提供的文件内容,我们将详细探讨MongoDB相关的知识点,并围绕NoSQL数据库的特点和优势,以及分布式系统理论中的CAP定理和ACID与BASE模型。 首先,MongoDB是一种流行的NoSQL数据库,它以文档的形式存储数据,与...
### MongoDB入门到精通知识点概述 #### 一、MongoDB简介 MongoDB是一种开源的文档数据库,采用JSON格式存储数据,并提供了高性能、高可用性和自动扩展的能力。它属于NoSQL数据库的一种,非常适合处理大规模数据和...
在这个“MongoDB入门”主题中,我们将深入探讨MongoDB的基础知识、安装与配置、数据模型、查询操作以及高级特性。 首先,让我们了解MongoDB的基本概念。MongoDB以其“集合”(Collections)和“文档”(Documents)...
1.mongodb-win32-i386-2.4.8.zip 由于大小限制,请到官网下载...2.MongoDB开发使用手册.docx 3.MongoDB快速入门教程.docx 4.MongoDB入门经典.doc 5.MougoTest.rar(MongoDB入门经典.doc用例)
MongoDB 入门教程笔记
《MongoDB入门指南》是一个快速入门MongoDB的教程,它以MongoDB的3.0版本进行说明。本教程安装的是MongoDB Windows 64位版本,目的只是为了让读者快速的入门MongoDB,快速理解和操作MongoDB。在开发或生产中强烈要求...
### MongoDB入门到精通 #### 一、MongoDB简介 **MongoDB** 是一款采用 C++ 编写的开源、可扩展且高性能的文档型数据库。它以其面向文档的特性、易于扩展性和高性能而著称,成为了现代应用开发中非常受欢迎的选择之...
MongoDB入门指南
### MongoDB入门学习知识点详解 #### 一、MongoDB简介与特点 MongoDB是一种非常流行的开源文档型NoSQL数据库系统,以其高性能、高可用性及易扩展性而著称。相较于传统的关系型数据库如MySQL、Oracle等,MongoDB...
10、MongoDB快速入门实战_ev.rar10、MongoDB快速入门实战_ev.rar10、MongoDB快速入门实战_ev.rar10、MongoDB快速入门实战_ev.rar10、MongoDB快速入门实战_ev.rar10、MongoDB快速入门实战_ev.rar10、MongoDB快速入门...
MongoDB 是一种流行的开源、非关系型数据库系统,以其灵活性和高性能在许多现代应用程序中得到广泛应用。本篇文章将深入介绍MongoDB的基础知识,包括它的应用背景、主要特性、数据库概念、安装部署以及基本操作。 ...
教程名称:MongoDB教程基础入门 课程目录:【】MongoDB教程基础入门-代码【】MongoDB教程基础入门01第一讲上【】MongoDB教程基础入门02第一讲下【】MongoDB教程基础入门03第二讲上【】MongoDB教程基础入门04第二讲...
本书《mongodb入门》是一本旨在帮助初学者快速学习MongoDB基本用法的入门小书。它适合那些希望在短时间内掌握MongoDB核心概念和操作的读者。作者Karl Seguin是一位拥有丰富技术背景的开发者,其经历跨越多个领域和...
MongoDB 的入门教程旨在帮助初学者快速掌握这个数据库系统的基本概念和操作。 《MongoDB 入门教程》CHM 手册可能涵盖以下关键知识点: 1. **数据模型**:MongoDB 使用类似 JSON 的文档结构(BSON)来存储数据,...
课时1:MongoDB数据库入门.mp4 课时2:MongoDB数据数据查询与分析.mp4 课时3:MongoDB数据库核心知识.mp4 课时4:MongoDB数据库管理备份.mp4 课时5:MongoDB开发实战:开发博客应用.mp4 课时6:MongoDB数据库性能...