ubuntu 16.04でphpバージョン7.0を使用しています。mongo ドライバー/クライアントをインストールするための詳細な情報を提供しています。最初にmongodbを手動でインストールし、次にmongodb-phpドライバーをインストールしました。
1) mongo db をインストールします。次のコマンドを入力します。
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org
Mongdb をサービスとして適切に起動するには、つまり、システムの起動時に Mongodb を自動的に起動するには、次の手順に従います。
次のコマンドを入力して、/etc/systemd/system/ にファイル mongodb.service を作成します。
$ sudo nano /etc/systemd/system/mongodb.service
次の内容を貼り付けます。
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
[Install]
WantedBy=multi-user.target
次に、次のコマンドを入力します。
$ sudo systemctl start mongodb
$ sudo systemctl enable mongodb
2) mongo-php ドライバーのインストール:
$ sudo pecl install mongodb
また、phpize not found というエラーが表示される場合もあります。Phpize は、ビルド環境を作成するために使用されるコマンドです。このエラーは、任意の pecl 拡張機能のインストール時に発生する可能性があります。phpize コマンドが見つからないというこの問題を解決するには、ユーザーは php5-dev パッケージをインストールする必要があります。インストールするには、次のコマンドを入力します。
$ sudo apt-get install php7.0-dev
次に、/etc/php/7.0/apache2 ディレクトリにある php.ini ファイルに、mongo db 拡張子を追加します。
$ sudo nano /etc/php/7.0/apache2/php.ini
ファイルに次の行を追加します。
拡張機能 = mongo.so;
(ファイルの正確な場所を指定する必要があるかもしれません。私の場合、ファイルは /usr/lib/php/20151012/mongodb.so にありました。)
したがって、mongo db はそのドライバーとともにインストールされます。
3) mongo-php クラスが変更されたことに注意してください。ネットで利用可能なリソースのほとんどは、置き換えられた古いクラスを使用したソリューションを提供します。参照できるリンクは次のとおりです。
http://php.net/manual/en/set.mongodb.php
http://zetcode.com/db/mongodbphp/
基本的なデータベース操作のコマンドを次に示します。
$mng = new MongoDB\Driver\Manager(); // Driver Object created
データベースにデータを挿入するには:
$bulk = new MongoDB\Driver\BulkWrite;
$doc = ["_id" => new MongoDB\BSON\ObjectID, "data" => $someData, "info" => $someInfo];
$bulk->insert($doc);
$mng->executeBulkWrite('dbName.collectionName', $bulk);
データを取得する場合:
$query = new MongoDB\Driver\Query([]);
$rows = $mng->executeQuery("dbName.collectionName", $query);
foreach ($rows as $row)
{
echo "$row->data - $row->info\n";
}