दूसरी स्कीमा का उपयोग करना बहुत आसान लगता है।
Document: { name: "name",
upvoters: [name1, name2, etc],
downvoters: [name1, name2, etc],
}
कुल वोट प्राप्त करने के लिए आप दस्तावेज़ प्राप्त कर सकते हैं और usedoc.upvoters.length-doc.downvoters.length (प्रत्येक दस्तावेज़ को अपवोटर्स और डाउनवॉटर एरे के साथ शुरू करें [ ])
आइटम "सी" पर उपयोगकर्ता "x" द्वारा किसी भी अपवोट को रिकॉर्ड करने के लिए बस यह करें:
db.votes.update({name:"c"},{$addToSet:{upvotes:"x"},$pull:{downvotes:"x"}})
यह परमाणु है और इसे 10 बार चलाने पर भी यही काम करने का फायदा है। यह आपको यह जांचने से भी बचाता है कि क्या "x" ने पहले से ही "c" को वोट दिया है और किस तरह से।
डाउनवोट रिकॉर्ड करने के लिए बस इसे उल्टा करें:
db.votes.update({name:"c"},{$addToSet:{downvotes:"x"},$pull:{upvotes:"x"}})