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

MongoDB:Menyematkan pengguna ke dalam komentar

Anda dapat menghindari N+1 -masalah ratusan permintaan menggunakan $in -kueri. Pertimbangkan ini:

Post {
  PosterId: ObjectId
  Text: string
  Comments: [ObjectId, ObjectId, ...] // option 1
}

Comment {
  PostId: ObjectId // option 2 (better)
  Created: dateTime,
  AuthorName: string,
  AuthorId: ObjectId,
  Text: string
}

Sekarang Anda dapat menemukan komentar posting dengan $in kueri, dan Anda juga dapat dengan mudah menemukan semua komentar yang dibuat oleh penulis tertentu.

Tentu saja, Anda juga dapat menyimpan komentar sebagai larik tersemat di postingan, dan melakukan $in kueri informasi pengguna saat Anda mengambil komentar. Dengan begitu, Anda tidak perlu mendenormalisasi nama pengguna dan tetap tidak memerlukan ratusan kueri.

Jika Anda memilih untuk mendenormalisasi nama pengguna, Anda harus memperbarui semua komentar yang pernah dibuat oleh pengguna tersebut saat pengguna berubah mis. namanya. Di sisi lain, jika operasi seperti itu tidak sering terjadi, itu tidak akan menjadi masalah besar. Atau mungkin lebih baik untuk menyimpan nama pengguna saat dia membuat komentar, tergantung kebutuhan Anda.

Masalah umum dengan penyematan adalah penulis yang berbeda akan menulis ke objek yang sama , jadi Anda harus menggunakan pengubah atom (seperti $push ). Ini terkadang lebih sulit digunakan dengan pembuat peta (saya tidak tahu mongoalchemy), dan umumnya kurang fleksibel.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. ElasticSearch dan mencari di beberapa bidang di PHP

  2. Cara memfilter koleksi berdasarkan setiap item array di bidang dokumen di Mongodb

  3. Penggunaan indeks gabungan MongoDB

  4. MongoDB - Lepaskan array menggunakan agregasi dan hapus duplikat

  5. Bagaimana cara mendeteksi apakah serializer mongodb sudah terdaftar?