Database
[{"city":"city1","device":"device1","deviceType":1},{"city":"city1","device":"device2","deviceType":0},{"city":"city1","device":"device3","deviceType":1},{"city":"city1","device":"device2","deviceType":0}]
Query
db.collection.aggregate([{"$group":{_id:{"city":"$city","deviceType":"$deviceType"},"deviceCount":{"$addToSet":"$device"},"count":{"$sum":1}}},{$project:{_id:0,city:"$_id.city",deviceType:"$_id.deviceType",deviceCount:{$size:"$deviceCount"}}}])