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.'
));

試した環境