ホームページ  >  記事  >  バックエンド開発  >  MongoDB で自動インクリメントをシミュレートする PHP コード_PHP チュートリアル

MongoDB で自動インクリメントをシミュレートする PHP コード_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:31:15696ブラウズ

コードは大まかに次のようになります:

コードをコピー コードは次のとおりです:

functiongenerate_auto_increment_id($namespace, array $option = array())
{
$option += array(
' init' => 1,
'step' => 1,
);
$instance = new Mongo();
$instance = $instance->selectCollection('_seq', 'seq') );
$ seq = $instance->db->command(array(
'findAndModify' => 'seq',
'query' => array('_id' => $namespace),
'update' = > array('$inc' => array('id' => $option['step'])),
'new' => true,
)); ($seq[ 'value']['id'])) {
return $seq['value']['id']
}
$instance->insert(array(
'_id' => $namespace,
'id' => $option['init'],
));
var_dump(generate_auto_increment_id('foo')); 'bar', array('init' => 123)));
具体的な実装方法は主にMongoDBのfindAndModifyコマンドを使用します。MongoDBにオブジェクトを挿入する前に毎回IDを生成して_idに代入すればOKです。実装はアトミック性を満たしているので同時実行性の問題はありません。

さらに、findAndModify 自体が upsert パラメーターを提供します。これが true の場合、自動的に挿入できますが、初期値をカスタマイズできないため、記事の例では upsert を使用しません。

ところで、データベース「_seq」の名前はアンダースコアで始まるので、最初にリストされ区別しやすくなります。
参考: MongoDB による自動インクリメント

http://www.bkjia.com/PHPjc/323090.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/323090.html

コードはおおよそ次のとおりです。 コードをコピーします。 コードは次のとおりです。 ?php functiongenerate_auto_increment_id($namespace, array $option = array()) { $option += array( 'init' = 1, 'step' = 1 、); $。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。