MongoDB - Auto-Increment Sequence: A Beginner's Guide

Hai there, bakat coding masa depan! ? Hari ini, kita akan memulakan sebuah perjalanan menarik ke dalam dunia MongoDB dan belajar tentang Auto-Increment Sequences. Jangan khawatir jika anda belum pernah menulis satu baris kod sebelum ini - saya akan menjadi panduannya yang ramah, dan kita akan mengambil langkah demi langkah. Pada akhir panduan ini, anda akan terkejut dengan apa yang anda boleh lakukan!

Auto-Increment Sequence

Apa Itu Auto-Increment Sequence?

Sebelum kita masuk ke dalam, mari kita memahami apa itu Auto-Increment Sequence. Bayangkan anda sedang mengatur sebuah pesta besar, dan anda mahu memberikan setiap tetamu nombor unik saat mereka tiba. Anda mulai dari 1, kemudian 2, 3, dan seterusnya. Itu sebenarnya apa yang dilakukan Auto-Increment Sequence di database - ia secara otomatis memberikan nombor unik, yang bertambah setiap kali rekord baru ditambahkan.

Sekarang, MongoDB tidak memiliki fitur auto-increment bawaan seperti beberapa database lain. Tetapi jangan khawatir! Kita akan belajar bagaimana membuat sendiri. Itu seperti menjadi seorang ahli sihir dan menciptakan mantra sendiri. Keren, kan?

Menggunakan Counter Collection

Trik pertama kita dalam membuat Auto-Increment Sequence adalah menggunakan sesuatu yang disebut Counter Collection. Bayangkan ini sebagai sebuah buku catatan khusus tempat kita menyimpan nomor-nomor kita.

Langkah 1: Buat Counter Collection

Pertama, kita perlu membuat buku catatan khusus ini. Dalam istilah MongoDB, kita akan membuat sebuah koleksi baru yang disebut "counters".

db.createCollection("counters")

Langkah 2: Sisipkan Dokumen Counter

Sekarang, mari kita tambahkan halaman ke buku catatan kita untuk sebuah urutan khusus. Kita akan menamakan ini "userId".

db.counters.insert(
{
_id: "userId",
seq: 0
}
)

Ini menciptakan dokumen di dalam koleksi counters. Field _id adalah "userId" (nama urutan kita), dan seq adalah 0 (nomor awal).

Langkah 3: Gunakan findAndModify untuk Mendapatkan Urutan Berikutnya

Ini adalah tempat magik berlangsung! Kita akan menggunakan operasi khusus MongoDB yang disebut findAndModify untuk mendapatkan nomor berikutnya dalam urutan kita.

function getNextSequence(name) {
var ret = db.counters.findAndModify(
{
query: { _id: name },
update: { $inc: { seq: 1 } },
new: true
}
);

return ret.seq;
}

mari kitauraikan ini:

  • query: { _id: name } mencari dokumen "userId".
  • update: { $inc: { seq: 1 } } meningkatkan nilai seq sebesar 1.
  • new: true memberitahu MongoDB untuk mengembalikan dokumen yang diperbarui.

Langkah 4: Gunakan Urutan dalam Koleksimu

Sekarang, saat anda ingin memasukkan pengguna baru dengan ID auto-increment, anda dapat melakukan ini:

db.users.insert(
{
_id: getNextSequence("userId"),
name: "Sarah Connor",
age: 29
}
)

Setiap kali anda menjalankan ini, ia akan menggunakan ID baru yang bertambah. Magik, kan?

Membuat Fungsi JavaScript

Sekarang kita mengerti dasarnya, mari kita buat fungsi JavaScript yang lebih kuat untuk menghandle keperluan auto-increment kita.

function getNextSequence(db, sequenceName) {
const sequenceDocument = db.collection("counters").findOneAndUpdate(
{ _id: sequenceName },
{ $inc: { sequence_value: 1 } },
{ returnDocument: "after", upsert: true }
);

return sequenceDocument.sequence_value;
}

Fungsi ini melakukan beberapa hal menarik:

  1. Ia menggunakan findOneAndUpdate, yang seperti findAndModify tapi lebih modern.
  2. Opsi upsert: true berarti ia akan menciptakan urutan jika itu belum ada.
  3. returnDocument: "after" memastikan kita mendapatkan nilai yang diperbarui.

Menggunakan Fungsi JavaScript

Sekarang, mari kita gunakan fungsi baru yang berkilau ini!

Contoh 1: Membuat Pengguna Baru

const db = client.db("myDatabase");

const userId = await getNextSequence(db, "userId");
const result = await db.collection("users").insertOne({
_id: userId,
name: "John Doe",
email: "[email protected]"
});

console.log(`Pengguna baru diciptakan dengan id: ${userId}`);

Dalam contoh ini, kita menciptakan pengguna baru dengan ID auto-increment. Itu seperti memberikan setiap pengguna baru nomor VIP di pesta kita!

Contoh 2: Membuat Produk Baru

const productId = await getNextSequence(db, "productId");
const result = await db.collection("products").insertOne({
_id: productId,
name: "Gadget Menakjubkan",
price: 99.99
});

console.log(`Produk baru ditambahkan dengan id: ${productId}`);

Lihat bagaimana kita menggunakan fungsi yang sama tetapi dengan nama urutan yang berbeda? Itu seperti memiliki beberapa sistem nomor pesta, masing-masing dengan sistem penomoran mereka sendiri!

Bonus: Tabel Metode

Berikut adalah tabel referensi cepat metode yang kita gunakan:

Metode Deskripsi
createCollection Membuat koleksi baru
insert Menyisipkan dokumen baru ke dalam koleksi
findAndModify Mencari dokumen dan memodifikasinya
findOneAndUpdate Versi modern dari findAndModify
insertOne Menyisipkan dokumen tunggal ke dalam koleksi

Kesimpulan

Selamat! Anda baru saja belajar membuat dan menggunakan Auto-Increment Sequences di MongoDB. Ingat, itu seperti menjadi pengurus pesta, memastikan setiap orang mendapat nomor unik. Keterampilan ini akan sangat berguna saat anda membangun aplikasi yang memerlukan ID unik dan bertambah.

Latihan membuat sempurna, jadi jangan takut untuk mencoba konsep ini. Sebelum anda tahu, anda akan membuat operasi database kompleks seperti seorang ahli! Terus kod, terus belajar, dan terutama, bersenang-senang! ??‍??‍?

Credits: Image by storyset