PHPからMongoDBのAutoIncrementを使用する
MongoDBでfindAndModifyを使用したAuto Incrementの実装方法が公式サイトに載っています。
Create an Auto-Incrementing Sequence Field
これをPHPで実装する場合、以下のようになります。
Auto Increment用collectionの作成
あらかじめAuto Increment用のcollection(counters)を用意します。
$ mongo > db.counters.insert({_id: 'userid', seq: 1});
PHPでの実装
commandを使用し取得したSequenceでINSERTを行います。
<?php $mongo = new Mongo('localhost:27017'); $db = $mongo->selectDB('hoge'); $rs = $db->command(array( 'findandmodify' => 'counters', 'query' => array('_id' => 'userid'), 'update' => array('$inc' => array('seq' => 1)) )); $seq_val = $rs['value']['seq']; $users = $db->selectCollection('users'); $users->insert(array( '_id' => $seq_val, 'name' => 'Sarah C.' ));
試した環境