Появилась необходимость подсчитать количество уникальных значений параметра в коллекции. Сначала был испробован distinct, который успешно справился с формированием отсортированного уникального списка значений, но вот организовать подсчет для этого списка в одном запросе не удалось. Успех был получен при использовании group и reduce:
db.my_collection.group({ key: {"field": true}, initial: {sum: 0}, reduce: function(doc, prev) { prev.sum += 1} })
Или как вариант:
db.$cmd.findOne({ group: { ns: "my_collection", cond: {}, key: {"field": true}, initial: {sum: 0}, $reduce: function(doc, prev) { prev.sum += 1} } })