MongoDB专题

 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集群,请参看相关文档.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值