Bagaimana cara membuat kunci komposit di mongodb?

Jadi akhir-akhir ini saya menjelajahi NestJS dengan Mongo DB dan luwak. Karena ini adalah kerangka kerja baru, menemukan bantuan apa pun secara online merupakan tantangan yang cukup besar. Jadi di sini saya memberikan bantuan sebanyak yang saya bisa untuk membuat hidup Anda mudah

Penafian. Repo GitHub yang saya berikan menggunakan banyak database meskipun dalam contoh saya menggunakan database tunggal, itu sebabnya Anda akan melihat Mongoose. Modul. forFeature({}) untuk modul pengguna dan hobi dalam aplikasi. file modul namun kedua modul luwak ini menggunakan satu database i. e. 'db1'. Jangan repot, Anda bisa menggunakan database tunggal dan kode akan berjalan dengan baik

Jadi hari ini saya akan membahas pembuatan kunci komposit/senyawa dengan relasi satu ke banyak menggunakan luwak di NestJS. Saya juga akan menunjukkan kepada Anda perubahan yang perlu Anda lakukan di file skema dalam berbagai skenario kasus. Meskipun saya akan memberikan seluruh basis kode yang akan saya gunakan dalam contoh ini, tetapi ini akan membantu Anda memahaminya

  1. Cara membuat aplikasi NestJS sederhana
  2. Cara membuat skema di NestJS menggunakan luwak
  3. Cara membuat modul di NestJS
  4. Apa itu relasi referensi dan relasi tertanam
  5. Cara menulis API di NestJS

Juga saya hanya akan menyebutkan kode file skema saya karena untuk membuat kunci komposit, hanya file skema yang perlu dimodifikasi, dan kemudian Anda menulis API menggunakan file repositori, layanan, dan pengontrol sesuai keinginan dan logika bisnis Anda

Mari kita mulai, Pertama-tama buat aplikasi NestJS menggunakan perintah

sarang nama_aplikasi baru

Ini akan memberi Anda kode pelat ketel sederhana untuk digunakan. Sekarang buat modul, dalam contoh ini saya akan menggunakan modul Pengguna sederhana. Anda dapat menggunakan perintah

modul_name modul sarang g

Sekarang mari kita buat skema. Di NestJS, kami menggunakan dekorator di seluruh aplikasi dan meskipun terlihat menakutkan, dekorator membuat hidup kami terlalu mudah. Ini kode untuk skema pengguna saya

export type UserDocument = User & Document;@Schema({})export class User {@Prop()email: string;@Prop()age: number;// @Prop({type: Types.ObjectId, ref: () => Address, refPath: ‘db2’})// address: Address@Prop()hobby: Hobby[]}

ekspor const UserSchema = SchemaFactory. createForClass(User);

UserSchema. indeks({email. 1, hobi. 1}, {unik. BENAR})

Sekarang di sini saya telah mendefinisikan skema dengan objek tersemat dari objek skema lain i. e. Hobi. Di NestJS, seperti node, saat menggunakan luwak Anda perlu memberi tahu skema tentang kunci komposit dengan meneruskan nama entitas dalam fungsi indeks. Angka di depan nama hanya mewakili urutan penyortiran. Dengan menambahkan bendera unik di baris terakhir, kami menetapkan batasan unik untuk kunci ini. Artinya, jika kombinasi kunci ini berulang maka akan melalui kesalahan basis data

Di sini saya membuatnya lebih kompleks dengan membuat kunci komposit dengan berbagai objek yang disematkan. Saya akan menyebutkan perubahan yang perlu Anda lakukan untuk membuat kunci komposit dalam berbagai skenario
  1. Objek Referensi

Di sisi dekorator Prop() tambahkan tipe prop sebagai Types. ObjectId dan tentukan skema referensi prop dengan meneruskan name sebagai string. Baris yang diperbarui akan terlihat seperti ini

@Prop({type: Types.ObjectId, ref: ‘Hobby’})
hobby: Hobby[]
_

Sekarang sebelum penyisipan, basis data akan memeriksa kombinasi email dengan ObjectID yang ada dalam larik dan jika ada pasangan yang mungkin berulang, itu akan melalui kesalahan

2. Tanpa hubungan apapun

Untuk membuat kunci komposit menggunakan entitas skema yang sama, Dalam hal ini mari kita buat kunci komposit menggunakan email dan usia. Yang perlu Anda ubah hanyalah informasi di dalam UserSchema. fungsi indeks. Garis yang diperbarui akan

UserSchema.index({email: 1, age: 1}, {unique: true})

Sekarang sebelum penyisipan, database akan memeriksa kombinasi email dengan usia dan jika pasangan berulang, itu akan menjadi kesalahan

Sekarang cukup jelas tapi saya pikir itu masih layak untuk disebutkan

Kami dapat membuat kunci komposit dengan menggabungkan lebih dari 2 entitas, yang perlu Anda lakukan hanyalah memberi tahu skema tentang entitas yang ingin Anda sertakan dalam kunci komposit di Skema. Indeks({ },{unik. benar}) fungsi

Sekian dari artikel ini. Semoga bermanfaat bagi salah satu developer yang datang ke sini dengan harapan akan menemukan jawabannya

Berikut tautan ke basis kode yang berfungsi

GitHub - haadbaig/NestJS

Node progresif. js framework untuk membangun aplikasi sisi server yang efisien dan dapat diskalakan. TypeScript kerangka sarang…

github. com

Hubungi saya di Medium/Twitter/LinkedIn jika Anda ingin saya menulis artikel tentang topik NestJS lainnya

Apakah MongoDB mendukung kunci komposit?

MongoDB mendukung indeks majemuk , di mana struktur indeks tunggal menyimpan referensi ke beberapa bidang [1] dalam dokumen koleksi. Diagram berikut mengilustrasikan contoh indeks majemuk pada dua bidang. MongoDB memberlakukan batas 32 bidang untuk indeks gabungan apa pun.

Bagaimana Anda membuat kunci komposit?

Kunci Utama Komposit dibuat dengan menggabungkan dua kolom atau lebih dalam tabel yang dapat digunakan untuk mengidentifikasi secara unik setiap baris dalam tabel .

Apa itu kunci komposit di MongoDB?

Kunci gabungan adalah kombinasi properti dalam dokumen yang mengidentifikasinya secara unik . Menggunakan kunci utama komposit tidak lebih baik atau lebih buruk daripada menggunakan satu properti yang dihasilkan secara otomatis. Kami bahkan dapat menggabungkan pendekatan ini dengan indeks unik.

Bagaimana cara membuat kunci komposit di JPA?

Untuk menentukan kunci primer komposit, kita harus mengikuti beberapa aturan. .
Kelas kunci utama komposit harus bersifat publik
Itu harus memiliki konstruktor no-arg
Itu harus mendefinisikan metode equals() dan hashCode()
Itu harus Serializable