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

Pemodelan/pembaruan data Mongo untuk pemungutan suara (naik dan turun)

Tampaknya lebih mudah menggunakan skema kedua.

Document:  { name: "name",
             upvoters: [name1, name2, etc],
             downvoters: [name1, name2, etc],
           }

Untuk mendapatkan total suara, Anda bisa mendapatkan doc dan usedoc.upvoters.length-doc.downvoters.length(mulai setiap dokumen dengan array upvoters dan downvoters menjadi [ ])

Untuk merekam upvote oleh Pengguna "x" pada item "c" lakukan saja:

db.votes.update({name:"c"},{$addToSet:{upvotes:"x"},$pull:{downvotes:"x"}})

Ini adalah atomik dan memiliki keuntungan melakukan hal yang sama bahkan jika Anda menjalankannya 10 kali. Ini juga membuat Anda tidak perlu memeriksa apakah "x" sudah memilih "c" dan ke arah mana.

Untuk merekam downvote, balikkan saja:

db.votes.update({name:"c"},{$addToSet:{downvotes:"x"},$pull:{upvotes:"x"}})


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Coba instal mongodb dengan dijango?

  2. Membuat daftar bernomor untuk data Meteor

  3. Masuk dengan winston-mongodb dan express-winston

  4. memasukkan item dalam daftar di dokumen mongodb

  5. Bagaimana cara mengecualikan satu bidang tertentu dari koleksi di Mongoose?