Rumah >pangkalan data >MongoDB >Bagaimana saya bekerja dengan dokumen dan tatasusunan tertanam di MongoDB?
Artikel ini meneroka dokumen dan tatasusunan tertanam MongoDB. Ia membincangkan mewujudkan, menanyakan, dan mengemas kini medan bersarang, membandingkan implikasi prestasi penyemakan berbanding rujukan, dan menawarkan amalan terbaik reka bentuk skema untuk keberkesanan optimum
Fleksibiliti MongoDB bersinar melalui sokongannya untuk dokumen dan tatasusunan tertanam. Dokumen tertanam adalah dokumen yang bersarang dalam dokumen lain, sementara Arrays memegang senarai dokumen atau nilai. Mari kita meneroka cara menggunakannya.
Mewujudkan dan menggunakan dokumen tertanam: Dokumen tertanam adalah ideal apabila data yang berkaitan adalah kecil dan sentiasa diakses bersama. Pertimbangkan koleksi users
di mana setiap pengguna mempunyai alamat. Daripada mempunyai koleksi addresses
yang berasingan dan merujuknya, anda boleh membenamkan alamat terus dalam dokumen pengguna:
<code class="json">{ "_id": ObjectId("..."), "name": "John Doe", "email": "john.doe@example.com", "address": { "street": "123 Main St", "city": "Anytown", "zip": "12345" } }</code>
Anda boleh mengakses dokumen tertanam menggunakan notasi dot dalam pertanyaan anda: db.users.find({ "address.city": "Anytown" })
. Anda juga boleh membenamkan tatasusunan dokumen dalam dokumen. Sebagai contoh, pengguna mungkin mempunyai nombor telefon berganda:
<code class="json">{ "_id": ObjectId("..."), "name": "Jane Doe", "email": "jane.doe@example.com", "phones": [ { "type": "home", "number": "555-1212" }, { "type": "mobile", "number": "555-3434" } ] }</code>
Membuat dan Menggunakan Array: Arrays adalah mudah untuk digunakan. Anda boleh menambah, mengalih keluar, dan mengemas kini elemen secara langsung menggunakan pengendali kemas kini seperti $push
, $pull
, dan $set
. Contohnya, menambah nombor telefon baru:
<code class="javascript">db.users.updateOne( { "_id": ObjectId("...") }, { $push: { "phones": { "type": "work", "number": "555-5656" } } } )</code>
Pilihan antara penyembuhan dan rujukan memberi kesan yang signifikan. Embedding umumnya lebih cepat untuk dibaca, terutamanya apabila anda sering memerlukan data yang berkaitan. Ia mengurangkan bilangan pertanyaan pangkalan data yang diperlukan kerana semua maklumat dalam satu dokumen. Walau bagaimanapun, embedding boleh membawa kepada saiz dokumen yang lebih besar, berpotensi memberi kesan kepada prestasi dan kos penyimpanan, terutamanya jika data tertanam adalah besar atau kerap dikemas kini.
Rujukan, sebaliknya, melibatkan membuat koleksi berasingan untuk data yang berkaitan dan menghubungkannya menggunakan ID objek. Ini lebih baik untuk dataset besar dan kerap dikemas kini. Bacaan menjadi sedikit lebih perlahan kerana mereka memerlukan banyak pertanyaan, tetapi menulis biasanya lebih cepat dan lebih efisien kerana dokumen tetap lebih kecil. Rujukan juga membantu mengelakkan duplikasi data dan menggalakkan normalisasi data. Pendekatan terbaik bergantung pada kes penggunaan khusus dan ciri -ciri data. Pertimbangkan saiz data, kekerapan kemas kini, dan corak pertanyaan semasa membuat keputusan ini.
Meminta dan mengemas kini medan bersarang memerlukan menggunakan notasi titik yang kita lihat sebelumnya. Sebagai contoh, untuk mengemas kini nombor telefon tertentu:
<code class="javascript">db.users.updateOne( { "_id": ObjectId("..."), "phones.type": "mobile" }, { $set: { "phones.$.number": "555-9876" } } )</code>
Operator $
mensasarkan elemen array tertentu yang sepadan dengan pertanyaan. Untuk pertanyaan atau kemas kini yang lebih kompleks yang melibatkan tatasusunan, pertimbangkan untuk menggunakan saluran paip agregasi. Agregasi menyediakan alat yang berkuasa untuk memproses dan mengubah data, termasuk medan bersarang. Sebagai contoh, anda boleh menggunakan $unwind
untuk mendekonstruksi array ke dalam dokumen individu, menjadikannya lebih mudah untuk menapis dan mengemas kini elemen tertentu. Ingatlah untuk menggunakan indeks dengan sewajarnya pada medan bersarang untuk meningkatkan prestasi pertanyaan. Indeks pada medan bersarang dibuat menggunakan notasi dot dalam perintah createIndex
.
Merancang skema yang berskala dan diselenggara dengan dokumen dan tatasusunan tertanam memerlukan pertimbangan yang teliti.
Dengan mengikuti amalan terbaik ini, anda boleh membuat skema MongoDB yang cekap, berskala, dan mudah dikekalkan. Ingat bahawa pendekatan optimum sangat bergantung pada keperluan khusus aplikasi anda.
Atas ialah kandungan terperinci Bagaimana saya bekerja dengan dokumen dan tatasusunan tertanam di MongoDB?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!