MongoDB专题

原创 2012年03月30日 15:43:55

 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。  


MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引


MongoDB官方网站:

http://www.mongodb.org/

网站上有可以安装的文件下载,目前版本是2.0.4版本

MongDB入门的书有:

<<MongoDB权威指南>> 作 者:(美) 霍多罗夫,(美) 迪洛尔夫 著,程显峰 译

作为NO SQL数据库的一个典型,MongDB在处理大数据量更新的时候非常优秀,据说能比传统DBMS高3个数量级(1000倍???)。


MongoDB的安装相当简单:

1.从官网下载ZIP包

2.解压缩ZIP.

3.编辑一个启动的脚本startup.bat,本例子为windows 7 版本64位,所以是一个bat文件:

D:\GreenProg\mongodb-win32-x86_64-2.0.4\bin\mongod.exe --dbpath=d:/mongodb/data


4.其中dbpath参数是指的数据存放路径,如果没有建立d:/mongodb/data文件夹,请手工建立.


5.运行脚步,看到如下提示表示启动成功:


D:\GreenProg\mongodb-win32-x86_64-2.0.4>D:\GreenProg\mongodb-win32-x86_64-2.0.4\
bin\mongod.exe --dbpath=d:/mongodb/data
Fri Mar 30 14:52:31 [initandlisten] MongoDB starting : pid=6900 port=27017 dbpat
h=d:/mongodb/data 64-bit host=zhouxj_PC
Fri Mar 30 14:52:31 [initandlisten] db version v2.0.4, pdfile version 4.5
Fri Mar 30 14:52:31 [initandlisten] git version: 329f3c47fe8136c03392c8f0e548506
cb21f8ebf
Fri Mar 30 14:52:31 [initandlisten] build info: windows sys.getwindowsversion(ma
jor=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1') BOOST_LIB
_VERSION=1_42
Fri Mar 30 14:52:31 [initandlisten] options: { dbpath: "d:/mongodb/data" }
Fri Mar 30 14:52:31 [initandlisten] journal dir=d:/mongodb/data/journal
Fri Mar 30 14:52:31 [initandlisten] recover : no journal files present, no recov
ery needed
Fri Mar 30 14:52:31 [initandlisten] waiting for connections on port 27017
Fri Mar 30 14:52:31 [websvr] admin web console waiting for connections on port 2
8017
Fri Mar 30 14:53:31 [clientcursormon] mem (MB) res:23 virt:89 mapped:0


MongoDB的管理:

启动控制台命令:mongo(这个有点象oracle的sqlplus),结果如下:

D:\GreenProg\mongodb-win32-x86_64-2.0.4\bin>mongo
MongoDB shell version: 2.0.4
connecting to: test
>

控制命令的语法是javaScript,这个真的很方便.例如:

> x=200
200
> x/4
50
>

关闭数据服务命令.

> use admin
switched to db admin
> db.shutdownServer();
Fri Mar 30 15:12:32 DBClientCursor::init call() failed
Fri Mar 30 15:12:32 query failed : admin.$cmd { shutdown: 1.0 } to: 127.0.0.1
server should be down...
Fri Mar 30 15:12:32 trying reconnect to 127.0.0.1
Fri Mar 30 15:12:33 reconnect 127.0.0.1 failed couldn't connect to server 127.0.
0.1
Fri Mar 30 15:12:33 Error: error doing query: unknown shell/collection.js:151
>

开发(java语言):

java开发需要下载java驱动包,地址是:https://github.com/mongodb/mongo-java-driver/releases

开发示例:

import java.net.UnknownHostException;
import java.util.Set;

import com.mongodb.Mongo;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;
import com.mongodb.MongoException;

public class MongoTest {
    public static void main(String[] args) {
        // Mongo m = new Mongo();
        // or
        // Mongo m = new Mongo( "localhost" );
        // or
        Mongo m;
        try {
            m = new Mongo("localhost", 27017);

            DB db = m.getDB("mydb");
            
            //boolean auth = db.authenticate(myUserName, myPassword);  //可选的权限控制
            Set<String> colls = db.getCollectionNames();

            for (String s : colls) {
                System.out.println(s);  //取得所有文档打印
            }
            
            DBCollection coll = db.getCollection("testCollection"); //按名字取文档
            BasicDBObject doc = new BasicDBObject();

            doc.put("name", "MongoDB");
            doc.put("type", "database");
            doc.put("count", 1);

            BasicDBObject info = new BasicDBObject();

            info.put("x", 203);
            info.put("y", 102);

            doc.put("info", info);

            coll.insert(doc);  //对指定文档插数据,
            
            DBObject myDoc = coll.findOne();  //查找一个数据
            System.out.println(myDoc);
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (MongoException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

运行结果可能是这样:

system.indexes
testCollection
{ "_id" : { "$oid" : "4f756443848c86ccbb35f80e"} , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}


mongDB的特性是能自动分片的处理来响应高并发的数据读写要求,默认情况下mongDB是非精确的处理数据,

请参看CAP原则,对于要求严格一致性的数据要求不适合用mongDB.如何部署自动分片的mongDB集群,请参看相关文档.

相关文章推荐

MongoDB 从入门到精通专题教程

最近有好多同事都在用mongodb,一个新的面向文档型介于面向对象与关系型之间免费的数据库,据说有拥有比传统数据库更高的性能。趁今天早上有空,就研究了一下。 首先上mongodb官网(www....

MongoDB资料汇总专题

原文地址:http://blog.nosqlfan.com/html/3548.html 1.MongoDB是什么 MongoDB介绍PPT分享MongoDB GridFS介绍PP...

MongoDB 从入门到精通专题教程

MongoDB 从入门到精通专题教程  最近有好多同事都在用mongodb,一个新的面向文档型介于面向对象与关系型之间免费的数据库,据说有拥有比传统数据库更高的性能。趁今天早上有空,就研究了一下...

西安交大软件工程专题课件

  • 2017年11月02日 17:47
  • 2.61MB
  • 下载

软件工程专题篇

  • 2017年11月16日 17:10
  • 11.89MB
  • 下载

【ROS Gazebo专题】四、将Fetch机器人放到Gazebo中进行玩耍

Gazebo的了解请看我前两篇博客: 【ROS学习笔记】二、Gazebo的使用上 【ROS学习笔记】三、Gazebo的使用下 系统环境介绍: 操作系统:Ubuntu 14.04 LTS ROS...

数据结构实用概念专题讲座

  • 2017年11月02日 16:16
  • 790KB
  • 下载

景观指数分析软件Fragstats专题学习

Fragstats 基于分类图像的空间格局分析程序:该软件是一个用来计算大量景观指数的计算机软件,该软件接受分类格局图像。美国林务局技术报告中曾经在1995年介绍过该软件,当时的版本是2.0,现在可供...

CSS3教程和css3新特性专题

  • 2016年06月06日 14:25
  • 1.55MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MongoDB专题
举报原因:
原因补充:

(最多只允许输入30个字)