Di mongodb bagaimana sebuah dokumen berhubungan dengan koleksi?

Data dalam MongoDB terdiri dari tiga jenis komponen. database, koleksi, dan dokumen. Basis data berada di bagian atas hierarki, koleksi di tingkat berikutnya, dan dokumen di bagian bawah

Di mongodb bagaimana sebuah dokumen berhubungan dengan koleksi?

Database menyediakan wadah untuk menyimpan dan mengatur data

Setiap database berisi satu atau lebih koleksi, dan setiap koleksi berisi nol atau lebih dokumen

Database dapat berisi banyak koleksi, tetapi koleksi tidak dapat menjangkau banyak database. Demikian pula, koleksi dapat berisi banyak dokumen, tetapi dokumen tidak dapat menjangkau banyak koleksi

Studio 3T mengatur dan menampilkan elemen data berdasarkan struktur dokumen MongoDB, yang menjadikannya alat praktis untuk memahami struktur tersebut

Di bagian berikut, Anda akan menerapkan apa yang telah Anda pelajari dari dasar-dasar MongoDB dan menggunakan Studio 3T untuk membuat database dan koleksi serta menambahkan dokumen ke koleksi, mengimpor dokumen dari. file json. Anda kemudian akan mengkueri dokumen, melihat hasilnya dalam tampilan yang berbeda, lalu memperbarui beberapa nilainya

Catatan di MongoDB adalah dokumen, yang merupakan struktur data yang terdiri dari pasangan bidang dan nilai. Dokumen MongoDB mirip dengan objek JSON. Nilai bidang dapat mencakup dokumen lain, larik, dan larik dokumen

Hubungan menegakkan integritas data dalam database relasional. Namun, tidak ada hubungan antara dokumen di MongoDB dan database NoSQL lainnya. Akibatnya, dokumen menjadi mandiri. Ada beberapa pendekatan berbeda untuk memodelkan hubungan dokumen ini.  

using data relationship in MongoDBHubungan MongoDB adalah representasi bagaimana beberapa dokumen terhubung secara logis satu sama lain di MongoDB. Metode Tersemat dan Direferensikan adalah dua cara untuk membuat hubungan semacam itu. Relasi Tersemat dan Relasi Referensi Dokumen adalah dua jenis relasi yang memiliki cara berbeda dalam bekerja dengan dokumen.  

Meskipun Tersemat cocok untuk hubungan satu-ke-satu dan satu-ke-banyak, Direferensikan cocok untuk banyak-ke-banyak. Denormalisasi, yang Tertanam, sedangkan Normalisasi adalah nama yang diberikan untuk hubungan Referensi. Membangun hubungan antar dokumen dapat membantu dalam penyempurnaan struktur database, serta meningkatkan kinerja dan mengurangi waktu eksekusi. Untuk mempelajari lebih lanjut tentang pengembangan, lihat kursus FSD.    

Model Dokumen Tertanam.  

Dokumen tertanam satu sama lain dalam model ini. Misalnya, kami memiliki dua dokumen. satu adalah dokumen siswa (yang berisi informasi dasar siswa seperti id dan cabang) dan yang lainnya adalah dokumen alamat (yang berisi alamat siswa). Akibatnya, daripada membuat dua dokumen terpisah, dokumen alamat disematkan di dalam dokumen siswa. Ini akan membantu pengguna dalam mengambil data dengan satu kueri, bukan serangkaian kueri

Model referensi.  

Kami memisahkan dokumen dalam model ini, tetapi satu dokumen berisi referensi ke dokumen lainnya. Misalnya, kami memiliki dua dokumen. satu adalah dokumen siswa (yang berisi informasi dasar siswa seperti id dan cabang) dan yang lainnya adalah dokumen alamat (yang berisi alamat siswa). Hasilnya, kolom id dari dokumen alamat direferensikan dalam dokumen siswa. Kami sekarang dapat menanyakan alamat dan mendapatkan alamat siswa menggunakan id referensi ini. Hubungan yang dinormalisasi biasanya dirancang menggunakan model ini

Hubungan Satu-ke-Satu (1. 1)

Yang paling mendasar dari semua hubungan adalah hubungan satu-ke-satu. Jika kita memiliki dokumen satu orang tua dan satu anak, ini adalah contoh hubungan satu-ke-satu.  

Contoh.  

Pertimbangkan skenario berikut. kami memiliki dua dokumen. Dokumen pertama berisi nama id dan cabang mahasiswa, sedangkan dokumen kedua berisi informasi alamat tetap mahasiswa.  

// Student document 
{ 
    StudentName: Ishan, 
    StudentId: k_hut_2022, 
    Branch:CSE 
} 
 
// Address document 
{ 
    StudentName: Ishan, 
    PremanentAddress: XXXXXXX, 
    City: Jaipur, 
    PinCode:302022 
} 

Jika data alamat sering digunakan, pengguna membuat kueri menggunakan Nama Siswa untuk mengambil data dari dokumen alamat. Namun, karena dua dokumen berisi bidang yang sama (mis. e. , StudentName), pengguna harus menulis beberapa kueri lagi untuk mengambil informasi yang diperlukan. Prosedur pengambilan data ini memakan waktu. Akibatnya, dokumen alamat disematkan di dokumen siswa.  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
_

Untuk mengambil data yang diperlukan, kita sekarang hanya perlu menulis satu kueri. Manfaat menggunakan dokumen yang disematkan adalah kita dapat mengelompokkan informasi yang diperlukan ke dalam satu dokumen. Hasilnya, mendapatkan detail dalam satu panggilan menjadi lebih mudah. Namun, seiring dengan bertambahnya ukuran dokumen, misalnya, dengan menambahkan informasi akademik dan atletik ke dokumen di atas, akan menjadi lebih lama dan membutuhkan waktu lebih lama untuk mengambil informasi tersebut. Kami mungkin memerlukan informasi akademik atau atletik hanya jika diperlukan, dan dalam kasus tersebut, kami mungkin perlu memecah dokumen dan menggunakan pola subset.  

Sekarang, kita akan membuat Database dengan nama 'Knowledgehut' dan koleksi bernama 'student'.  

db.student.insert({"StudentName":"Ishan","StudentId":"k_hut_2022","Branch":"CSE","PermanentAddress":{"permaAddress":"xxxxxxxx","City":"Jaipur","PinCode":302022}}) 

Anda dapat memeriksa dokumen di database dengan.  

db.student.find().pretty() 
Data Relationships in MongoDB – A quick guide

Sekarang kita akan memeriksa alamat siswa.

db.student.find({StudentName:"Ishan"},{"PermanentAddress.permaAddress":1}).pretty() 
Data Relationships in MongoDB – A quick guide

Hubungan Satu ke Banyak (1. N) 

Dokumen induk tunggal yang memiliki beberapa dokumen turunan adalah contoh hubungan satu ke banyak. Ini mirip dengan satu-ke-satu, tetapi dengan sejumlah besar dokumen ‘anak-anak’ . Menggunakan metode tersemat untuk menjalin hubungan dapat mengurangi jumlah operasi pembacaan yang diperlukan untuk mengambil data.  

Hubungan satu-ke-banyak dengan Dokumen Tertanam

Contoh.  

Kami dapat membuat hubungan satu-ke-banyak antara data menggunakan dokumen yang disematkan, memungkinkan kami mengambil data dengan cepat dengan sedikit operasi baca. Dengan bantuan sebuah contoh, sekarang kita akan membahas hubungan satu-ke-banyak dengan dokumen yang disematkan.   

Seseorang mungkin memiliki beberapa alamat, seperti alamat saat ini (lokasi tempat tinggalnya saat ini) dan alamat tempat tinggal (lokasi tempat ia memiliki rumah atau memiliki alamat tetap). Kemungkinan hubungan satu ke banyak terjadi selama waktu itu. Hasilnya, kami dapat menyimpan alamat permanen dan saat ini dalam satu dokumen menggunakan model dokumen yang disematkan.  

// Student document 
{ 
    StudentName: Ishan, 
    StudentId: k_hut_2022, 
    Branch:CSE 
} 
 
// Permanent Address document 
{ 
    StudentName: Ishan, 
    PermanentAddress: XXXXXXX, 
    City: Jaipur, 
    PinCode:302022 
} 
 
// Current Address document 
{ 
    StudentName: Ishan, 
    CurrentAddress: XXXXXXX, 
    City: Kota, 
    PinCode:324001 
} 

Alih-alih menulis tiga dokumen, sekarang kita dapat menggabungkannya menjadi satu.  

// Student document 
{ 
    StudentName: ishan, 
    StudentId: k_hut_2022, 
    Branch:CSE 
    Address: [ 
    { 
        StudentName: Ishan, 
        PermanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }, 
    { 
        StudentName: Ishan, 
        CurrentAddress: XXXXXXX, 
        City: kota, 
        PinCode:324001 
    } 
    ] 
} 
_

Karena kami menyimpan semua data dalam satu kumpulan (meskipun ada lebih dari dua jenis informasi alamat, kami dapat menyimpannya dalam larik JSON), kami dapat membuat kueri dalam satu panggilan dan mendapatkan seluruh kumpulan data, sehingga menghasilkan .  

Di sini, kami menggunakan database knowledgehut dan kumpulan mahasiswa.  

Masukkan dokumen ke dalam koleksi dengan kode berikut.  

db.student.insert({"StudentName":"Ishan","StudentId":"k_hut_2022","Branch":"CSE","PermanentAddress":[{"permaAddress":"xxxxxxxx","City":"Jaipur","PinCode":302022}, {"currAddress": "pppppp","City": "Kota","PinCode": 324001}]}) 
Data Relationships in MongoDB – A quick guide

Sekarang kita akan memeriksa alamat siswa.

db.student.find({StudentName:"Ishan"},{"PermanentAddress.permaAddress":1,"PermanentAddress.currAddress":1}).pretty() 
Data Relationships in MongoDB – A quick guide

Salah satu manfaat utama membuat Hubungan Tersemat di MongoDB adalah kueri dijalankan lebih cepat daripada hubungan yang direferensikan. Hubungan ini juga meningkatkan kinerja, dan hasil diperoleh dengan cepat. Ini juga berlaku untuk kumpulan data besar.

Hubungan satu-ke-banyak dengan referensi dokumen

Model referensi dokumen juga dapat digunakan untuk membuat hubungan satu ke banyak. Kami memisahkan dokumen dalam model ini, tetapi satu dokumen berisi referensi ke dokumen lainnya. Tidak yakin harus mulai dari mana untuk memulai perjalanan pengembangan Anda? .   

Contoh.  

Dengan bantuan sebuah contoh, sekarang kita akan membahas hubungan satu-ke-banyak dengan referensi dokumen. Asumsikan bahwa kita memiliki seorang guru yang mengajar di dua kelas yang berbeda. Dan dia memiliki tiga dokumen.  

// Class 1 document 
{ 
    TeacherId: k_hut_2022, 
    ClassName: khutA, 
    ClassId: D_123, 
    Studentcount: 44, 
    Subject: "DSA", 
} 
 
// Class 2 document 
{ 
    TeacherId: k_hut_2022, 
    ClassId: D_234, 
    ClassName: khutB, 
    Studentcount: 55, 
    Subject: "Compiler”, 
} 
_

Pengambilan data dari berbagai dokumen ini sekarang memakan waktu. Akibatnya, kami akan menggunakan model referensi untuk membantu guru dalam mengambil data dengan satu kueri.  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
_0

Data untuk kelas 1 dan 2 kini dapat diambil dengan mudah menggunakan kolom classIds ini.  

Di sini, kami bekerja dengan database knowledgehut dan sekarang, kami akan menggunakan pengajar koleksi baru.  

Untuk menyisipkan lebih dari satu dokumen, kita akan menggunakan metode insertMany().  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
_1

Saat Anda memasukkan dokumen-dokumen ini ke dalam koleksi, Anda akan melihat keluaran seperti ini.  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
_2

Sekarang, untuk memeriksa dokumen, gunakan.  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
3Data Relationships in MongoDB – A quick guide

HUBUNGAN BANYAK KE BANYAK (N. M) 

Karena tidak ada perintah tunggal untuk mengimplementasikan hubungan banyak-ke-banyak dalam database relasional, ini lebih sulit daripada hubungan satu-ke-banyak. Hal yang sama berlaku saat menggunakan mongoDB untuk mengimplementasikannya. Faktanya, Anda tidak dapat menggunakan perintah untuk membuat jenis hubungan apa pun di MongoDB.   

Memiliki kemampuan untuk menyimpan array dalam dokumen, di sisi lain, memungkinkan Anda menyimpan data dengan cara yang mudah diambil dan dipelihara, serta memberi Anda informasi yang Anda perlukan untuk menautkan dua dokumen dalam kode Anda.  

Relasi Banyak ke Banyak adalah jenis relasi mongodb di mana setiap dua entitas dalam dokumen dapat memiliki beberapa relasi.  

Dalam hubungan ini, kita dapat mempertimbangkan kasus situs web Kursus online di mana terdapat banyak kursus dan juga banyak pengguna. Setiap kursus dibeli oleh banyak pengguna dan setiap pengguna dapat membeli banyak kursus.  

Contoh.  

Untuk ini, kami akan membuat database knowledgehut dan dua kumpulan pengguna dan kursus yang berbeda.  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
_4

Keluaran.  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
_5

Dalam koleksi kursus, kami telah menambahkan dua kursus dan harga kursus tersebut dalam dolar.  

Di koleksi pengguna, kami akan menambahkan dokumen pengguna yang terdaftar di kursus dengan perintah ini.  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
_6

Keluaran.  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
_7

Kami dapat memeriksa koleksi pengguna.  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
8Data Relationships in MongoDB – A quick guide

Selanjutnya, kita harus memperbarui koleksi kursus dengan userId.

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
_9

Keluaran.  

db.student.insert({"StudentName":"Ishan","StudentId":"k_hut_2022","Branch":"CSE","PermanentAddress":{"permaAddress":"xxxxxxxx","City":"Jaipur","PinCode":302022}}) 
0Data Relationships in MongoDB – A quick guide

Sekarang Anda dapat melihat koleksi kursus dengan usersId di daftar pengguna.

Tersemat atau Direferensikan?

Ada dua jenis hubungan di MongoDB. Tertanam dan dijadikan referensi. Setiap hubungan memiliki kelebihan dan kekurangannya masing-masing. Koneksi ini membantu peningkatan kinerja. Itu menerapkan salah satu hubungan sebagai Satu ke Satu, Satu ke Banyak, atau Banyak ke Banyak tergantung pada situasinya. Implementasi hubungan ini telah meningkatkan konsistensi data.  

Apa itu koleksi dan dokumen di MongoDB?

Koleksi adalah pengelompokan dokumen MongoDB . Dokumen dalam koleksi dapat memiliki bidang yang berbeda. Koleksi setara dengan tabel dalam sistem basis data relasional. Koleksi ada dalam satu database.

Apa arti dokumen dalam MongoDB?

Dokumen adalah unit dasar data di MongoDB . Dokumennya mirip dengan Notasi Objek JavaScript, tetapi menggunakan varian yang disebut Binary JSON (BSON). Manfaat menggunakan BSON adalah mengakomodasi lebih banyak tipe data. Bidang dalam dokumen ini serupa dengan kolom dalam database relasional.

Bagaimana cara menghubungkan dokumen di MongoDB?

Aplikasi MongoDB menggunakan salah satu dari dua metode untuk menghubungkan dokumen. Referensi manual simpan bidang _id dari satu dokumen di dokumen lain sebagai referensi . Aplikasi Anda menjalankan kueri kedua untuk mengembalikan data terkait. Referensi ini sederhana dan cukup untuk sebagian besar kasus penggunaan.

Apa hubungan antar dokumen di MongoDB?

Dalam MongoDB, sebuah hubungan mewakili bagaimana jenis dokumen yang berbeda secara logis terkait satu sama lain . Hubungan seperti satu-ke-satu, satu-ke-banyak, dll. , dapat direpresentasikan dengan menggunakan dua model yang berbeda. Model dokumen tertanam. Model referensi.