简体   繁体   中英

Get number of documents per field in MongoDB, like Studio3T Schema operation

How do I obtain the distribution of fields among a MongoDB collection, ie the total count of documents for each field (without knowing the fields) ?

Eg considering these documents :

{ "doc": { "a": …, "b": … } }
{ "doc": { "a": …, "c": … } }
{ "doc": { "a": …, "c": …, "d": { "e": … } } }

I would like to get

{ "a": 3, "b": 1, "c": 2, "d": 1, "d.e": 1 }

Studio3T has a "Schema" feature which does exactly that (and a bit more) for a random sample of the DB, how is the query constructed ?

One way is to use db.collection.countDocuments() with the $exists operator:

db.collection.countDocuments({ a: { $exists: true});
db.collection.countDocuments({ b: { $exists: true});
db.collection.countDocuments({ c: { $exists: true});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM