Rumah pembangunan bahagian belakang tutorial php 在MongoDB中模拟Auto Increment的php代码_php技巧

在MongoDB中模拟Auto Increment的php代码_php技巧

May 17, 2016 am 09:20 AM
auto mongodb

代码大致如下所示:

复制代码 代码如下:

function generate_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,
));
if (isset($seq['value']['id'])) {
return $seq['value']['id'];
}
$instance->insert(array(
'_id' => $namespace,
'id' => $option['init'],
));
return $option['init'];
}
var_dump(generate_auto_increment_id('foo'));
var_dump(generate_auto_increment_id('bar', array('init' => 123)));
?>

其具体实现方式主要是利用MongoDB中findAndModify命令,只要每次往MongoDB里insert对象前生成ID赋值给_id就OK了,因为它的实现满足原子性,所以不存在并发问题。

另外说明一点,findAndModify本身提供了一个upsert参数,为true的话可以自动insert,但那样就不能自定义初始值了,所以文中示例没有使用upsert。

BTW,数据库“_seq”的名字以下划线开头,这样列表的时候会排在前面,更容易分辨些。

参考:Auto Increment with MongoDB

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Versi mana yang biasanya digunakan untuk mongodb? Versi mana yang biasanya digunakan untuk mongodb? Apr 07, 2024 pm 05:48 PM

Adalah disyorkan untuk menggunakan versi terkini MongoDB (kini 5.0) kerana ia menyediakan ciri dan penambahbaikan terkini. Apabila memilih versi, anda perlu mempertimbangkan keperluan fungsian, keserasian, kestabilan dan sokongan komuniti Sebagai contoh, versi terkini mempunyai ciri seperti transaksi dan pengoptimuman saluran paip. Pastikan versi itu serasi dengan aplikasi. Untuk persekitaran pengeluaran, pilih versi sokongan jangka panjang. Versi terkini mempunyai sokongan komuniti yang lebih aktif.

Perbezaan antara nodejs dan vuejs Perbezaan antara nodejs dan vuejs Apr 21, 2024 am 04:17 AM

Node.js ialah masa jalan JavaScript bahagian pelayan, manakala Vue.js ialah rangka kerja JavaScript sisi klien untuk mencipta antara muka pengguna interaktif. Node.js digunakan untuk pembangunan bahagian pelayan, seperti pembangunan API perkhidmatan belakang dan pemprosesan data, manakala Vue.js digunakan untuk pembangunan sisi klien, seperti aplikasi satu halaman dan antara muka pengguna yang responsif.

Di manakah pangkalan data yang dibuat oleh mongodb? Di manakah pangkalan data yang dibuat oleh mongodb? Apr 07, 2024 pm 05:39 PM

Data pangkalan data MongoDB disimpan dalam direktori data yang ditentukan, yang boleh terdapat dalam sistem fail tempatan, sistem fail rangkaian atau storan awan Lokasi khusus adalah seperti berikut: Sistem fail tempatan: Laluan lalai ialah Linux/macOS: /data/db, Windows: C:\data\db. Sistem fail rangkaian: Laluan bergantung pada sistem fail. Storan Awan: Laluan ditentukan oleh pembekal storan awan.

Apakah kelebihan pangkalan data mongodb Apakah kelebihan pangkalan data mongodb Apr 07, 2024 pm 05:21 PM

Pangkalan data MongoDB terkenal dengan fleksibiliti, skalabiliti dan prestasi tingginya. Kelebihannya termasuk: model data dokumen yang membolehkan data disimpan dengan cara yang fleksibel dan tidak berstruktur. Skala mendatar kepada berbilang pelayan melalui sharding. Fleksibiliti pertanyaan, menyokong pertanyaan kompleks dan operasi pengagregatan. Replikasi data dan toleransi kesalahan memastikan lebihan data dan ketersediaan tinggi. Sokongan JSON untuk penyepaduan mudah dengan aplikasi bahagian hadapan. Prestasi tinggi untuk respons pantas walaupun semasa memproses sejumlah besar data. Sumber terbuka, boleh disesuaikan dan percuma untuk digunakan.

Apakah maksud mongodb? Apakah maksud mongodb? Apr 07, 2024 pm 05:57 PM

MongoDB ialah sistem pangkalan data teragih berorientasikan dokumen yang digunakan untuk menyimpan dan mengurus sejumlah besar data berstruktur dan tidak berstruktur. Konsep terasnya termasuk penyimpanan dan pengedaran dokumen, dan ciri utamanya termasuk skema dinamik, pengindeksan, pengagregatan, pengurangan peta dan replikasi. Ia digunakan secara meluas dalam sistem pengurusan kandungan, platform e-dagang, laman web media sosial, aplikasi IoT dan pembangunan aplikasi mudah alih.

Bagaimana untuk membuka mongodb Bagaimana untuk membuka mongodb Apr 07, 2024 pm 06:15 PM

Pada Linux/macOS: Cipta direktori data dan mulakan perkhidmatan "mongod". Pada Windows: Cipta direktori data dan mulakan perkhidmatan MongoDB daripada Pengurus Perkhidmatan. Dalam Docker: Jalankan arahan "docker run". Pada platform lain: Sila rujuk dokumentasi MongoDB. Kaedah pengesahan: Jalankan arahan "mongo" untuk menyambung dan melihat versi pelayan.

Di manakah fail pangkalan data mongodb? Di manakah fail pangkalan data mongodb? Apr 07, 2024 pm 05:42 PM

Fail pangkalan data MongoDB terletak dalam direktori data MongoDB, iaitu /data/db secara lalai, yang mengandungi .bson (data dokumen), ns (maklumat pengumpulan), jurnal (tulis rekod operasi), wiredTiger (data apabila menggunakan WiredTiger enjin storan ) dan konfigurasi (maklumat konfigurasi pangkalan data) dan fail lain.

Apa yang perlu dilakukan jika navicat tamat tempoh Apa yang perlu dilakukan jika navicat tamat tempoh Apr 23, 2024 pm 12:12 PM

Penyelesaian untuk menyelesaikan isu tamat tempoh Navicat termasuk: memperbaharui lesen dan menyahpasang semula kemas kini automatik, hubungi Navicat Premium Essentials;

See all articles