一、MongoDB簡介
MongoDB (名稱來自”humongous”) 是一個可擴展的、高性能、開源、模式自由、面向文檔的數據庫,集文檔數據庫、鍵值對存儲和關系型數據庫的優點於一身。
MongoDB特點:
• 面向文檔存儲(類JSON數據模式簡單而強大)
• 動態查詢
• 全索引支持,擴展到內部對象和內嵌數組
• 查詢記錄分析
• 快速,就地更新
• 高效存儲二進制大對象 (比如照片和視頻)
• 復制和故障切換支持
• Auto-Sharding自動分片支持雲級擴展性
• MapReduce 支持復雜聚合
• 商業支持,培訓和咨詢
二、安裝MongoDB
安裝MongoDB非常的簡單,僅需下載壓縮包解壓運行命令即可
下載地址: https://www.mongodb.org/downloads
本文為windows平台,MongoDB運行命令:>bin/mongod
提示:首先要創建存儲數據的文件夾,MongoDB 默認存儲數據目錄為 /data/db/ (或者 c:datadb),當然你也可以修改成不同目錄,只需要指定 –dbpath 參數,
示例:
>bin/mongod –dbpath=d:mgdatadb
更多請參看我的CSDN博客:MongoDB 安裝配置
三、安裝MongoDB PHP擴展
根據自己的PHP版本下載PHP擴展:
http://php.net/manual/en/mongo.installation.php#mongo.installation.nix
http://www.php.net/manual/en/mongo.installation.php#mongo.installation.windows
提示:
1、VC6適合Apache、VC9適合IIS;
2、Thread safe適合PHP以模塊運行方式、Non-thread safe適合CGI運行方式。
修改php.ini,加入:extension=php_mongo.dll,重啟Web服務器。
Ubuntu安裝步驟:
1. 下載插件: mongo-php-driver
2. 解壓安裝:
$ tar zxvf mongodb-mongodb-php-driver-.tar.gz $ cd mongodb-mongodb-php-driver- $ phpize $ ./configure $ make all $ sudo make install
3. 配置php.ini
#extension=uploadprogress.so
#extension=http.so
#extension=intl.so
#extension=curl.so
extension=/usr/lib/php5/20121212/curl.so
extension=/usr/lib/php5/20121212/gd.so
extension=/usr/lib/php5/20121212/json.so
extension=/usr/lib/php5/20121212/mysql.so
extension=/usr/lib/php5/20121212/mysqli.so
#extension=/usr/lib/php5/20121212/opcache.so
extension=/usr/lib/php5/20121212/pdo.so
extension=/usr/lib/php5/20121212/pdo_mysql.so
#extension=/usr/lib/php5/20121212/readline.so
#extension=/usr/lib/php5/20121212/xdebug.so
extension=/usr/local/lib/php/extensions/no-debug-non-zts-20121212/redis.so
extension=/usr/local/lib/php/extensions/no-debug-non-zts-20121212/mongo.so
4. 重啟apache
sudo /etc/init.d/apache2 restart
5. 修改默認啟動項目(可選)
sudo vim /etc/apache2/apache2.conf
添加配置代碼如下:
1234567891011121314*
:
80
>
ServerAdmin webmaster@localhost
DocumentRoot
/
home
/
homer
/
workspace
/
home
/
homer
/
workspace
/
money_client>
DirectoryIndex index.html index.php
Options Indexes FollowSymLinks
AllowOverride
None
Require
all
granted
<
/
Directory>
ServerName localhost
DirectoryIndex index.html index.php
ErrorLog ${APACHE_LOG_DIR}
/
error_alibuyer.log
CustomLog ${APACHE_LOG_DIR}
/
access_alibuyer.log combined
<
/
VirtualHost>
四、PHP示例
1、連接Mongo服務器
1234567891011121314$conn
=
new
Mongo();
// 連接localhost:27017
$conn
=
new
Mongo(
'test.com'
);
// 連接遠程主機默認端口
$conn
=
new
Mongo(
'test.com:22011'
);
//連接遠程主機22011端口
// MongoDB有用戶名密碼
$conn
=
new
Mongo(
mongodb://${username}:${password}@localhost
);
// MongoDB有用戶名密碼並指定數據庫blog
$conn
=
new
Mongo(
mongodb://${username}:${password}@localhost/blog
);
// 多個服務器
$conn
=
new
Mongo(
mongodb://localhost:27017,localhost:27018
);
?>
或者使用 MongoClient()
1234567891011121314151617$MONGO_SERVER
=
array
(
'host'
=>
'10.123.55.16'
,
'port'
=>27017,
'dbname'
=>
'mimvp_money'
,
'user'
=>
''
,
'pwd'
=>
''
);
$count
=
$coll
->
count
();
print
(
count:
.
$count
);
$host_port
=
$MONGO_SERVER
[
'host'
] .
:
.
$MONGO_SERVER
[
'port'
];
// '10.123.55.16:20517'
$conn
=
new
MongoClient(
$host_port
);
$db
=
$conn
->selectDB(
$MONGO_SERVER
[
'dbname'
]);
$coll
=
new
MongoCollection(
$db
,
$connName
);
$conn
->close();
?>
2、指定數據庫和數據集名(表名)
1234$db
=
$conn
->blog;
// 選擇數據庫blog
$collection
=
$db
->users;
// 制定結果集(表名:users)
?>
3、CRUD 操作
123456789101112131415$user
=
array
(
'name'
=>
'caleng'
,
'email'
=>
'[email protected]'
);
// 新增
$collection
->insert(
$user
);
$newdata
=
array
(
'$set'
=>
array
(
email
=>
[email protected]
));
// 修改
$collection
->update(
array
(
name
=>
caleng
),
$newdata
);
$collection
->remove(
array
(
'name'
=>
'caleng'
),
array
(
justOne
=> true));
// 刪除
$cursor
=
$collection
->find();
// 查找
var_dump(
$cursor
);
$user
=
$collection
->findOne(
array
(
'name'
=>
'caleng'
),
array
(
'email'
));
// 查找一條
var_dump(
$user
);
?>
4、關閉連接
123$conn
->close();
?>
五、示例代碼
123456789101112131415161718192021222324252627282930313233343536373839//這裡采用默認連接本機的27017端口,當然你也可以連接遠程主機如192.168.0.4:27017,如果端口是27017,端口可以省略
$m
=
new
Mongo();
// 選擇comedy數據庫,如果以前沒該數據庫會自動創建,也可以用$m->selectDB(comedy);
$db
=
$m
->comedy;
//選擇comedy裡面的collection集合,相當於RDBMS裡面的表,也-可以使用
$collection
=
$db
->collection;
$db
->selectCollection(
collection
);
//添加一個元素
$obj
=
array
(
title
=>
Calvin and Hobbes-
.
date
(
'i:s'
),
author
=>
Bill Watterson
);
//將$obj 添加到$collection 集合中
$collection
->insert(
$obj
);
//添加另一個元素
$obj
=
array
(
title
=>
XKCD-
.
date
(
'i:s'
),
online
=> true );
$collection
->insert(
$obj
);
//查詢所有的記錄
$cursor
=
$collection
->find();
//遍歷所有集合中的文檔
foreach
(
$cursor
as
$obj
)
{
echo
$obj
[
title
] .
;
}
//刪除所有數據
//$collection->remove();
//刪除 name 為hm
//$collection->remove(array('name'=>'hm'));
//斷開MongoDB連接
$m
->close();
?>