Saya ingin tahu tentang pro dan kontra penggunaan subdocuments vs lapisan yang lebih dalam di skema utama saya:
var subDoc = new Schema({
name: String
});
var mainDoc = new Schema({
names: [subDoc]
});
atau
var mainDoc = new Schema({
names: [{
name: String
}]
});
Saat ini saya menggunakan subdoc di mana-mana tetapi saya terutama bertanya-tanya tentang kinerja atau masalah kueri yang mungkin saya temui.
javascript
node.js
mongodb
mongoose
cyberwombat
sumber
sumber
_id
lapangan? Maksud saya, tidak otomatis jika diaktifkan?_id
bidang sub dokumen itu unik? (Dibuat menggunakan cara ke-2 dalam pertanyaan OP)Jawaban:
Menurut dokumen , itu persis sama. Namun, menggunakan Skema akan menambahkan
_id
bidang juga (selama Anda tidak menonaktifkannya), dan mungkin menggunakan lebih banyak sumber daya untuk melacak sub dokumen.sumber
Jika Anda memiliki skema yang digunakan kembali di berbagai bagian model Anda, mungkin berguna untuk menentukan skema individual untuk dokumen anak sehingga Anda tidak perlu menggandakan diri sendiri.
sumber
Anda harus menggunakan dokumen tertanam jika itu adalah dokumen statis atau yang jumlahnya tidak lebih dari beberapa ratus karena pengaruh kinerja. Saya telah membahas tentang masalah itu beberapa waktu yang lalu. Baru-baru ini, Asya Kamsky yang bekerja sebagai arsitek solusi untuk MongoDB telah menulis artikel tentang "menggunakan sub dokumen".
Saya harap itu membantu siapa yang mencari solusi atau praktik terbaik.
Posting asli di http://askasya.com/post/largeembeddedarrays . Anda dapat mencapai profil stackoverflow-nya di https://stackoverflow.com/users/431012/asya-kamsky
sumber
Pada dasarnya, buat variabel
nestedDov
dan taruh di sininame: [nestedDov]
Versi Sederhana:
Contoh JSON
Contoh:
sumber
Saya rasa ini ditangani di tempat lain oleh beberapa pos di SO.
Hanya sedikit:
Kunci besarnya adalah tidak ada jawaban tunggal di sini, hanya serangkaian pertukaran yang agak rumit.
sumber
Ada beberapa perbedaan di antara keduanya:
Menggunakan skema bersarang berguna untuk validasi.
Skema bersarang dapat digunakan kembali di skema lain.
sumber