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

MongoEngine:Dokumen Tertanam v/s. ReferensiField

Jawabannya sangat tergantung pada apa yang ingin Anda lakukan dengan data yang Anda simpan di mongodb. Penting untuk diingat bahwa ReferenceField akan menunjuk ke dokumen dalam koleksi lain di mongodb, sedangkan EmbeddedDocument disimpan dalam dokumen yang sama dalam koleksi yang sama.

Pertimbangkan skema ini:

Person
    -> name
    -> address

Address
    -> street
    -> city
    -> country

Jika Anda mengharapkan setiap orang hanya memiliki satu alamat dan setiap alamat hanya dikaitkan dengan satu orang (hubungan satu-ke-satu) dan Anda biasanya akan menanyakan database untuk satu atau lebih Person dokumen maka bidang Person.address harus EmbeddedDocumentField .

Jika Anda mengharapkan setiap orang memiliki lebih dari satu alamat tetapi setiap alamat hanya akan dikaitkan dengan satu orang (hubungan satu-ke-banyak) dan Anda masih akan menanyakan Orang, maka Anda dapat menggunakan EmbeddedDocumentListField .

Jika Anda mengharapkan setiap orang memiliki lebih dari satu alamat dan setiap alamat akan dikaitkan dengan banyak orang (hubungan banyak ke banyak), Anda mungkin harus menggunakan ReferenceField .

Namun, meskipun Anda one-to-one atau one-to-many, jika Address adalah bagian dari model data Anda yang menarik maka mungkin menguntungkan untuk menyimpannya dalam koleksinya sendiri karena membuat agregasi dan pengindeksan lebih mudah.

Satu hal lain yang perlu dipertimbangkan adalah bahwa kecuali Anda mengubahnya mati mongoengine akan menghapus referensi setiap ReferenceField ketika Anda mengambil dokumen - ini mungkin memperkenalkan hukuman kinerja dengan banyak ReferenceField atau referensi ke dokumen yang sangat besar.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara mendapatkan nilai hitungan menggunakan $lookup di mongodb menggunakan golang?

  2. MongoDB ORM untuk Python?

  3. Cara mencari sub array di MongoDB

  4. Node.js ke MongoDB:temukan berdasarkan Tanggal

  5. db.collection.count() mengembalikan lebih banyak dokumen untuk koleksi sharded di MongoDB