MongoDB简单介绍

    技术2022-05-20  26

     

    1. MongoDB简单介绍

    MongoDB (from "humongous") 是一个可扩展的,高效的,面向文档的数据库。它的作用是介于关系数据库与key-value数据库之间的一种数据库。它具有如下几个特点:

     

    面向文档的存储结构:它底层是用一种叫JSON的结构来做为基本的存储单元,以此来提供动态的Schema,对任意属性的索引支持数据冗余与高可用性数据的自动分片丰富的查询模式支持Map/Reduce数据流处理基于GridFS的文件存储系统

     

    2. Quickstart 64-bit linux

    下面是一个单机配置MongoDB的例子,是参考http://www.mongodb.org/display/DOCS/Quickstart+Unix写的

    2.1 二进制代码下载

    $ wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.6.5.tgz . $ tar xzvf http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.6.5.tgz 

    2.2 建立相应的数据库

    $ sudo mkdir -p /data/db $ sudo chown `id -u`:`id-u` /data/db 

    上面是建立MongoDB启动时的默认数据库地址,你也可以在启动MongoDB的时候加--dbpath参数来指定数据库的路径

    2.3 运行数据库

    启动数据库

    $ ./mongodb-xxxxxxx/bin/mongod 

    启动客户端连接上数据库,默认服务是打开27017这个端口的,你也可以加--port参数来指定端口号

    $ ./mongodb-xxxxxxx/bin/mongo > db.foo.save({a:1}) > db.foo.find() 

     

    3. 一些简单的数据库操作语句

    3.1 建立数据库连接

    首先打开一个MongoDB的JS shell

    $ bin/mongo 

    这个客户端默认是去连接本地的27017端口的,你可以用 bin/mongo ip:port的形式来指定IP与端口号

    > use mydb 

    这是转到你所使用的数据库上,这与mysql是一样的

    3.2 插入数据

    > j = { name : "mongo" }; {"name" : "mongo"} > t = { x : 3 }; { "x" : 3 } > db.things.save(j); > db.things.save(t); > db.things.find(); // 遍历表things中的所有数据 { "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" } { "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 } > 

    这是的"_id"字段是数据库自动增加的

     

    > for (var i = 1; i <= 20; i++) db.things.save({x : 4, j : i}); // 批量插入 > db.things.find(); { "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" } { "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 } .... { "_id" : ObjectId("4c220a42f3924d31102bd867"), "x" : 4, "j" : 18 } has more 

     

    3.3 数据查询

    使用游标来操作数据集

    > var cursor = db.things.find(); > while (cursor.hasNext()) printjson(cursor.next()); { "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" } { "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 } .... { "_id" : ObjectId("4c220a42f3924d31102bd85e"), "x" : 4, "j" : 9 } 

    返回指定的字段数据

    SELECT * FROM things WHERE name="mongo" ------- > db.things.find({name:"mongo"}).forEach(printjson); { "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" } 返回指定的数据个数 > db.things.find().limit(3); { "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" } { "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 } { "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 } 

     

    3.4 相关资料

    当然,MongoDB支持一些更加复杂的查询,如OR,AND,Group by等,可以参考如下

    http://www.mongodb.org/display/DOCS/Manual

    http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart

     

    4. python客户端的介绍

    4.1 安装

    $ git clone git://github.com/mongodb/mongo-python-driver.git pymongo $ cd pymongo/ $ python setup.py install 

    4.2 简单使用

    >>> import pymongo import Connection >>> connection = Connection() 你也可以指定IP与端口号 >>> connection = Connection('localhost',27017) 得到一个数据库 >>> db = connection.test_database 或者用这种方式 >>> db = connection['test_database'] 得到一个数据集 >>> collection = db.test_collection 插入数据 >>> post = {"author":"bob"} >>> posts = db.posts >>> posts.insert(post)/ 输出所有posts表中的数据 >>> for post in posts.find(): >>> post 

     

    5 参考资料

    http://www.mongodb.org/#

     

    http://api.mongodb.org/python/1.9+/index.html

    http://www.mongodb.org/display/DOCS/Drivers

     

     

     


    最新回复(0)