MongoDB - distinct-types.js
Description:
Similar to the db.myCollection.distinct() function, distinctTypes() will return "types" rather than "values". To accomplish this, it adds the following function to the DBCollection prototype:
DBCollection.prototype.distinctTypes = function (
keyString,
query,
limit,
skip,
) {};
Usage:
// we hope this would return ['bson'] not ['bson','string']
db.users.distinctTypes('name');
// should return ['string']
db.users.distinctTypes('name.first');
// should return ['string']
db.users.distinctTypes('address.phone');
// only search documents that have { 'name.first' : 'Bob' }
db.users.distinctTypes('address.phone', { 'name.first': 'Bob' });
// only search the first 10 documents
db.users.distinctTypes('address.phone', {}, 10);
// only search documents 10-15
db.users.distinctTypes('address.phone', {}, 10, 5);
Caveats:
By design, distinctTypes() returns 'bson' rather than 'object'. It will return 'numberlong' rather than 'number', etc.
Installation:
Download: distinct-types.js
Option 1
Add this script to your .mongorc.js file.
Option 2
Start the shell after executing this script
mongo --shell distinct-types.js