MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

проста система за гласуване с MongoDB

Когато го направите по този начин, няма да проследите кой потребител вече е гласувал, така че потребителите могат да гласуват няколко пъти. Това със сигурност не е във ваш интерес.

Поради тази причина бих добавил масив „гласове“ към всяка статия, който включва обект за всяко гласуване, което уникално идентифицира потребителя, който го е направил:

votes: [ 
        { voter:"name or ID or IP address or some other unique identifier for the person who voted",
          vote:-1 },
        { voter:"someone else",
          vote:1 },
        { voter:"and someone entirely different",
          vote:-1 }
    ]

Когато създадете уникален индекс върху ИД на статията и votes.voter, вече сте гарантирали, че никой не може да гласува два пъти за статия.

Когато използвате стойност „-1“ за гласуване „против“ и „1“ за гласуване „за“, можете да изчислите общия резултат на дадена статия, като използвате функцията за обобщаване на $sum (Също така лесно ще ви позволи да въведете претеглени гласове по-късно, когато почувствате харесвам).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. получаване на атрибути на схемата от Mongoose Model

  2. mongoimport в docker-compose ми дава грешка „Не може да стартира услуга“.

  3. Синхронизирайте бази данни на mongo на различни сървъри

  4. Ограничете и сортирайте вградена карта/намаляване в MongoDB

  5. Масивите, съхранявани в MongoDB, запазват ли реда си?