初识MongoDB


写在前面

       最近在研究MongoDB,用过mysql,也用过MSSQL,Oracle没用过,但他们都是基于SQL的、基于表的关系型数据库。懂其一,而他的都能略知一二。而MongoDB而是基于文档。那么什么是MongoDB?下面有五件事是PHP开发者应该了解的。

  1. MongoDB是一个单独的服务器。
  2. MongoDB是基于文档,而不是基于表。
  3. MongoDB中较少的Schema。
  4. 你不需要学习另外的语言。
  5. MongoDB有良好的PHP支持。

一.MongoDB的下载。

1. 下载对应的操作系统的MongoDB。官网下载:http://www.mongodb.org/downloads,我是在windows 32操作系统下使用的,所以下载对应的windows 32版,写这篇文章的时候 最新版本是2.0.2:http://downloads.mongodb.org/win32/mongodb-win32-i386-2.0.2.zip。

2. 下载PHP对应的MongoDB的驱动,以来用PHP来接连MongoD。官网下载:https://github.com/downloads/mongodb/mongo-php-driver/mongo-1.1.4.zip,找到对应的PHP版本,我的是PHP5.2的apache服务器,所以我用是mongo-1.1.4-php5.2vc6ts,(注:vc6代码是apache服务器,vc9表示是微软的IIS服务器。ts表示有线程保护。)

二.MongoDB的安装。

1. 在E盘新建文件夹MongoDB,如:E:\MongoDB,

2.把下载的MongoDB解压,把bin目录的所有文件,复制到MongoDB目录下。

3.在MongoDB目录下新建目录data,新建目录logs,分别来存放数据和日志文件。

如下图所示:


4. 启动mongoDB

打开cmd命令提示,输入:

[plain]
  1. >E:  
  2. E:\>cd MongoDB  
  3. E:\MongoDB >mongod --dbpath E:\mongoDB\data  
如下图所示:


这个时候MongoDB就启动了,占用的是27017端口。

在浏览器输入:http://localhost:27017/,可以看到如下图提示:
You are trying to access MongoDB on the native driver port. For http diagnostic access, add 1000 to the port number 


说明,MongoDB数据库服务已经成功启动了。

5. 将mongoDB进程加入到windows开机自动启动,免得每次都要执行第4步的动作,还不能关闭命令提示符器。

其中--dbpath 数据库存放的位置,可以存放到多个位置。--logpath 日志的目录。--logappend 日志记录的方式是在旧的日志后追加。--directoryperdb 参数让系统为每个 DB 创建一个独立子目录。--serviceName 服务进程的名字,--install 安装。

[html]
  1. E:\mongodb\>mongod --logpath E:\mongodb\logs\mongodb.log --logappend --dbpath E:\mongodb\data --directoryperdb --serviceName mongodb --install  
这样执行的日志文件就会全部被记录到E:\MangoDB\logs\mongodb.log文件中了,而且MongoDB也会开机自启动了。


我们可以打开我的电脑,查看系统开机进程,发现mongoDB已经加到进程当中,可以停止和重启。


6. mongoDB的简单实用命令。

[html]
  1. E:\mongodb>mongo.exe  
  2. MongoDB shell version: 2.0.2  
  3. connecting to: test  
  4. > show dbs;显示数据  
  5. admin  
  6. local  
  7. > help;查看命令提示  
  8.         db.help()                    help on db methods  
  9.         db.mycoll.help()             help on collection methods  
  10.         rs.help()                    help on replica set methods  
  11.         help connect                 connecting to a db help  
  12.         help admin                   administrative help  
  13.         help misc                    misc things to know  
  14.   
  15.         show dbs                     show database names  
  16.         show collections             show collections in current database  
  17.         show users                   show users in current database  
  18.         show profile                 show most recent system.profile entries wit  
  19. h time >= 1ms  
  20.         use <db_name>                set current database  
  21.         db.foo.find()                list objects in collection foo  
  22.         db.foo.find( { a : 1 } )     list objects in foo where a == 1  
  23.         it                           result of the last line evaluated; use to f  
  24. urther iterate  
  25.         exit                         quit the mongo shell  
  26. > use testdb;切换到testdb数据库,如果不存在则在插入数据后会自动创建一个,在data目录下可以看到新增了一个testdb的文件夹  
  27. switched to db testdb  
  28. > db.myc.save({a:10});向collection mpc 中保存一条信息,如果不存在collection会自动创建一个  
  29. > db.myc.find();检索所有记录  
  30. { "_id" : ObjectId("4d32c9204e6100000000691e"), "a" : 10 }  
  31. > show collections;  
  32. myc  
  33. system.indexes  
  34. >exit;退出  

三. MongoDB与 php 连接。

1.将下载的MongoDB对应php版本的驱动 php_mongo.dll 复制到php安装目录的ext 目录下。

2.打开php的配置文件 php.ini ,加入驱动: extension=php_mongo.dll

3.重启apache服务器,查看phpinfo。

如下图:


说明mongoDB与PHP搭桥成功!

4,用代码测试mongoDB与PHP。

[php]
  1. <?php  
  2. //php连接mongoDB   
  3.   
  4. // connect连接   
  5. $m = new Mongo();  
  6.   
  7. // select a database选择一个数据库   
  8. $db = $m->comedy;  
  9.   
  10. // select a collection (analogous to a relational database's table)选一个关联(类似于关联数据库中的一个表)   
  11. $collection = $db->cartoons;  
  12.   
  13. // add a record增加一个记录   
  14. $obj = array"title" => "Calvin and Hobbes""author" => "Bill Watterson" );  
  15. $collection->insert($obj);  
  16.   
  17. // add another record, with a different "shape"增加另一个记录   
  18. $obj = array"title" => "XKCD""online" => true );  
  19. $collection->insert($obj);  
  20.   
  21. // find everything in the collection查找   
  22. $cursor = $collection->find();  
  23.   
  24. // iterate through the results输出结果。   
  25. foreach ($cursor as $obj) {  
  26.     echo $obj["title"] . "\n";  
  27. }  
  28. ?>  
输入结果为:Calvin and HobbesXKCD 说明php与mongoDB连接成功!

很详细的介绍过程。

相关内容