以前、CentOS6 + PHP5.6の環境下で動かしていたPHPでMongoDBをごにょごにょといじくるスクリプトがあったんですが、CentOS7+PHP7で動かすとエラー
そういやドライバ入ってないじゃんと思ってインストールしようとしたのですが微妙に流儀が変わっていたのでメモ
マニュアルにも
MongoDB ドライバ (旧版)
MongoDB driver
とあるとおり今まであったものは旧版扱い
PHPやドライバのインストール
私はPHP関連はremiリポジトリを使っています
PHP7.0の場合はremi-php70というリポジトリを有効にした上でphp-*なモジュールに関してはphp70-を頭につければいいらしい
ひとまずcliとmongodbとマルチバイトだけの最小構成
sudo yum --enablerepo=remi,remi-php70 install php70-php-cli php70-php-mbstring php70-php-pecl-mongodb
環境変数
これでインストールが終わったのですがシェルからphpと打つと
$ php -v
PHP 5.6.xx (cli) (built: xxxx)
Copyright (c) 1997-2016 The PHP Group
Zend Engine vx.x.x, Copyright (c) 1998-2016 Zend Technologies
予め入れてあったphp5.6が有効に・・・
php7を使うには
$ source /opt/remi/php70/enable
として環境変数を設定してあげなきゃいけないらしい
もう7以外使わないという人は.bashrcあたりに書いておくと幸せかも
ライブラリを入れる
チュートリアルを見ると素のPHPで使う場合はこのライブラリを入れてねという風にお勧めされているので素直にしたがってcomposerでインストールしておく
サンプル
ここまでやってしまえばあとは旧版とほぼ同じOneとManyでメソッドが分かれているのがポイント?
<?php
require_once dirname(__FILE__) . '/vendor/autoload.php';
$client = new MongoDB\Client("mongodb://localhost:27017");
$db = $client->selectDatabase('example');
$collection = $db->selectCollection('gochiusa');
$collection->insertOne([ 'name' => '宇治松千夜', 'shop' => '甘兎庵', 'cv' => '佐藤聡美' ]);
$collection->insertOne([ 'name' => '桐間紗路', 'shop' => 'フルール・ド・ラパン', 'cv' => '内田真礼']);
$collection->insertMany([
[ 'name' => '保登心愛', 'shop' => 'ラビットハウス', 'cv' => '佐倉綾音' ],
[ 'name' => '香風智乃', 'shop' => 'ラビットハウス', 'cv' => '水瀬いのり' ],
[ 'name' => '天々座理世', 'shop' => 'ラビットハウス', 'cv' => '種田梨沙' ],
]);
$chiya = $collection->findOne(['name' => '宇治松千夜']);
$rabbithouse = $collection->find(['shop' => 'ラビットハウス']);
foreach($rabbithouse as $rabbit){
print_r($rabbit);
}