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

Pemodelan banyak-ke-banyak:melalui dengan Mongoid/MongoDB

Memodelkan skema Mongodb yang baik sangat bergantung pada cara Anda mengakses data. Dalam kasus yang Anda jelaskan, Anda akan mengindeks kunci memberships.user_id Anda yang tampaknya ok. Tetapi ukuran dokumen Anda akan bertambah karena Anda akan menambahkan pemirsa, editor, dan administrator. Selain itu, skema Anda akan mempersulit pembuatan kueri seperti:

Proyek kueri, di mana user_id xxx adalah editor:

Sekali lagi, Anda mungkin tidak perlu menanyakan proyek seperti ini, sehingga skema Anda terlihat baik-baik saja. Tetapi jika Anda perlu menanyakan proyek Anda berdasarkan user_id DAN peran, saya sarankan Anda membuat koleksi 'project_membership' :

db.project_memberships.insert(
  { 
    "project_id" : ObjectId("4d730fcfcedc351d67000032"),
    "editors" : [
      ObjectId("4d730fcfcedc351d67000002"),
      ObjectId("4d730fcfcedc351d67000004")
    ],
    "viewers" : [
      ObjectId("4d730fcfcedc351d67000002"),
      ObjectId("4d730fcfcedc351d67000004"),
      ObjectId("4d730fcfcedc351d67000001"),
      ObjectId("4d730fcfcedc351d67000005")
    ],
    "administrator" : [
      ObjectId("4d730fcfcedc351d67000011"),
      ObjectId("4d730fcfcedc351d67000012")
    ]
  }
)

db.project_memberships.ensureIndex({"editors": 1})
db.project_memberships.ensureIndex({"viewers": 1})
db.project_memberships.ensureIndex({"administrator": 1})

Atau bahkan lebih mudah... tambahkan indeks pada skema proyek Anda:

db.projects.ensureIndex({"memberships.role": 1})



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. menu mean.js adalahPublik tidak berfungsi

  2. MongoDB $oid vs ObjectId

  3. MongoDB dengan data CSV

  4. Rata-rata Bidang Sub Dokumen Di Seluruh Dokumen di Mongo

  5. menutup koneksi mongodb di node.js sambil memasukkan banyak data