Database

[{"name":"Test","votes":[{"user":"joe","action":"up"},{"user":"john","action":"up"},{"user":"emma","action":"down"}]}]

Query

db.collection.aggregate([{"$unwind":"$votes"},{"$group":{"_id":"$name",ups:{$sum:{$cond:{"if":{"$eq":["$votes.action","up"]},then:1,else:0}}},not_ups:{$sum:{$cond:{"if":{"$ne":["$votes.action","up"]},then:1,else:0}}},"score":{$sum:{$cond:{"if":{"$eq":["$votes.action","up"]},then:1,else:-1}}}}}])

Result