Symfoware

Symfowareについての考察blog

PHPからMongoDB 2.0.6 に接続する(PHP MongoDB Driver)

PHPからMongoDBに接続してみます。

Webサーバーの構築はこちらの手順。
Debian 7 + nginx + php-fpmな環境を構築する

MongoDBのインストールはこちらの手順で構築した環境を使用します。
Debian 7にMongoDB 2.0.6 をapt-getでインストールする




接続ドライバーのインストール



PHP MongoDB Driverを使用することにしました。
PHP MongoDB Driver

必要なモジュールをapt-getでインストールします。


# apt-get install php5-dev php5-cli php-pear g++ make




peclコマンドでドライバーをインストール。
認証を使用しない場合は、Build with Cyrus SASLはnoで良いと思います。


# pecl install mongo
downloading mongo-1.5.4.tgz ...
Starting to download mongo-1.5.4.tgz (191,364 bytes)
.........................................done: 191,364 bytes
116 source files, building
running: phpize
Configuring for:
PHP Api Version:         20100412
Zend Module Api No:     20100525
Zend Extension Api No: 220100525
Build with Cyrus SASL (MongoDB Enterprise Authentication) support? [no] :

(略)

Build process completed successfully
Installing '/usr/lib/php5/20100525/mongo.so'
install ok: channel://pecl.php.net/mongo-1.5.4
configuration option "php_ini" is not set to php.ini location
You should add "extension=mongo.so" to php.ini




mongo.soが生成されました。
設定ファイルを作成し、ライブラリがロードされるようにします。


# vi /etc/php5/fpm/conf.d/mongo.ini




mongo.iniに記載する内容は以下のとおり。


; configuration for php mongo module
extension=mongo.so




php-fpmを使用していますので、一旦再起動。


# /etc/init.d/php5-fpm restart




phpinfoを表示して、mongoの項目が表示されれば
ライブラリのロードは成功しています。

432_01.png





接続のサンプル



プログラムは、こちらのドキュメントを参考に作成しました。
http://jp1.php.net/manual/ja/mongo.tutorial.php
http://jp1.php.net/mongo



  1. <?php
  2. // MongoDBに接続
  3. $client = new MongoClient();
  4. // データベース選択(どちらでもok)
  5. //$db = $client->selectDB('php_db');
  6. $db = $client->php_db;
  7. // コレクション取得(どちらでもok)
  8. //$col = $db->selectCollection('php_collection');
  9. $col = $db->php_collection;
  10. // データの登録
  11. $doc = array('title' => 'タイトル', 'value' => 'テスト登録');
  12. $col->insert($doc);
  13. // コレクション全件検索
  14. $cursor = $col->find();
  15. foreach($cursor as $doc) {
  16.     echo $doc['title'] . ':' . $doc['value'] . '<br/>';
  17. }




そっけないですが、登録と検索が行えることが確認できました。

432_02.png






検索条件の指定



findで検索条件を指定してみます。
3件ほどデータを登録しました。


  1. <?php
  2. // MongoDBに接続
  3. $client = new MongoClient();
  4. // データベース選択(どちらでもok)
  5. //$db = $client->selectDB('php_db');
  6. $db = $client->php_db;
  7. // 一旦コレクションを削除
  8. $db->dropCollection('php_collection');
  9. // コレクション取得(どちらでもok)
  10. //$col = $db->selectCollection('php_collection');
  11. $col = $db->php_collection;
  12. // データの登録
  13. $doc = array('number' => 1, 'title' => '一番目', 'value' => '一番目の値');
  14. $col->insert($doc);
  15. $doc = array('number' => 2, 'title' => '二番目', 'value' => '二番目の値');
  16. $col->insert($doc);
  17. $doc = array('number' => 3, 'title' => '三番目', 'value' => '三番目の値');
  18. $col->insert($doc);
  19. // コレクション全件検索
  20. $cursor = $col->find();
  21. foreach($cursor as $doc) {
  22.     echo $doc['title'] . ':' . $doc['value'] . '<br/>';
  23. }




432_03.png



number:2のデータだけ表示してみます。


  1. <?php
  2. // MongoDBに接続
  3. $client = new MongoClient();
  4. // データベース選択(どちらでもok)
  5. //$db = $client->selectDB('php_db');
  6. $db = $client->php_db;
  7. // コレクション取得(どちらでもok)
  8. //$col = $db->selectCollection('php_collection');
  9. $col = $db->php_collection;
  10. // number:2のデータを検索
  11. $cursor = $col->find(array('number' => 2));
  12. foreach($cursor as $doc) {
  13.     echo $doc['title'] . ':' . $doc['value'] . '<br/>';
  14. }




いい感じです。

432_04.png




ソート



nuber:3からデータを降順で取得してみます。


  1. <?php
  2. // MongoDBに接続
  3. $client = new MongoClient();
  4. // データベース選択(どちらでもok)
  5. //$db = $client->selectDB('php_db');
  6. $db = $client->php_db;
  7. // コレクション取得(どちらでもok)
  8. //$col = $db->selectCollection('php_collection');
  9. $col = $db->php_collection;
  10. // numberでソート
  11. $cursor = $col->find()->sort(array('number' => -1));
  12. foreach($cursor as $doc) {
  13.     echo $doc['title'] . ':' . $doc['value'] . '<br/>';
  14. }




432_05.png

引数に「1」を指定すると昇順、「-1」を指定すると降順になります。
http://jp1.php.net/manual/ja/mongocursor.sort.php



関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2014/07/27(日) 20:11:26|
  2. MongoDB
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Debian 7にapt-getでRedis 2.4.14をインストールする | ホーム | MongoDB PyMongo 2.7.1 findでandやor、$gt,$ltを使用する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1437-001c45c2
この記事にトラックバックする(FC2ブログユーザー)