While exploring mongoose for nodejs I ran into the problem of needing to know the amount of user in my collection:
My collection has records, each record has a user
Here's an alternative answer as I get an exception when I try Reddest's approach with Mongoose 3.1.2 (which seems like a bug in Mongoose to me as Reddest's approach should be fine).
You can call the distinct
method on your collection's model, specifying the name of the user-identifying field of that collection:
Record.distinct('user_id').exec(function (err, user_ids) {
console.log('The number of unique users is: %d', user_ids.length);
});
Or if you want to chain the distinct
call from a find, include the callback in the distinct
call (this did work for me):
Record.find().distinct('user_id', function (err, user_ids) { ... });
UPDATE
If you just want the count without getting the values, stick a count()
call in the chain:
Record.distinct('user_id').count().exec(function (err, count) {
console.log('The number of unique users is: %d', count);
});
NOTE: this doesn't work in the latest Mongoose code (3.5.2).