MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Mongo _id untuk larik subdokumen

Saya berasumsi:

{
    g: [
        { _id: ObjectId(), property: '' },
        // next
    ]
}

Jenis struktur untuk pertanyaan ini.

Tidak biasanya. _id s adalah pengidentifikasi unik untuk entitas. Karena itu jika Anda ingin menambahkan _id dalam objek sub-dokumen maka Anda mungkin tidak menormalkan data Anda dengan baik dan itu bisa menjadi tanda kelemahan mendasar dalam desain skema Anda.

Sub-dokumen dirancang untuk berisi data berulang untuk dokumen itu, yaitu alamat atau pengguna atau sesuatu.

Itu dikatakan _id tidak selalu merupakan hal yang buruk untuk ditambahkan. Ambil contoh yang baru saja saya nyatakan dengan alamat. Bayangkan Anda memiliki sistem keranjang belanja dan (karena alasan tertentu) Anda tidak mereplikasi alamat ke dokumen pesanan maka Anda akan menggunakan _id atau pengenal lain untuk mengeluarkan sub-dokumen itu.

Anda juga harus mempertimbangkan untuk menghubungkan dokumen. Jika itu _id menjelaskan dokumen lain dan propertinya adalah atribut khusus untuk dokumen itu sehubungan dengan dokumen tertaut itu, maka tidak apa-apa juga.

Sebuah ObjectId masih cukup besar sehingga perlu dipertimbangkan untuk id yang lebih kecil, kurang unik atau tidak menggunakan _id sama sekali untuk sub-dokumen.

Untuk indeks, itu tidak benar-benar berfungsi berbeda dengan _id standar bidang pada dokumen itu sendiri dan indeks unik di seluruh bidang harus berfungsi di seluruh koleksi (bergantung skenario, uji kueri Anda).

NB:MongoDB tidak akan menambahkan _id ke sub-dokumen untuk Anda.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Flask &MongoDB - Untuk Loop tidak berfungsi

  2. mongoDB:temukan dengan nilai yang disematkan

  3. Bagaimana Melakukan Pembaruan Atom pada EmbeddedDocument di ListField di MongoEngine?

  4. Bagaimana saya bisa menanyakan mongodb menggunakan mongoid/rails tanpa batas waktu?

  5. bagaimana cara menerapkan pagination gulir tak terbatas di sudut 5?