Created
February 6, 2014 12:29
-
-
Save matteofigus/8843247 to your computer and use it in GitHub Desktop.
A script to list all the collections and document count for a specific mongodb db
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Usage: mongo {Server without mongodb:// example 127.0.0.1:27017}/{DbName} [-u {Username}] [-p {Password}] < ./mongo-ls.js | |
var collections = db.getCollectionNames(); | |
print('Collections inside the db:'); | |
for(var i = 0; i < collections.length; i++){ | |
var name = collections[i]; | |
if(name.substr(0, 6) != 'system') | |
print(name + ' - ' + db[name].count() + ' records'); | |
} |
@rakesh You would need to save the collection name and object count in a list first, then sort it and take the top 10.
On RoboMongo, this scripts is not working.. this is the right version, with a little add-on, (lists only collections with more than 1000 docs.)
var collections = db.getCollectionNames();
for(var i = 0; i < collections.length; i++){
var name = collections[i];
if(name.substr(0, 6) != 'system'){
var c = db.getCollection(name).count() ;
if (c > 1000) print(name + ' - ' + c + ' records');
}
}
Use db.listCollections() instead of db.getCollectionNames(),
getCollectionNames() is deprecated
A script to list all the collections and document count for all mongodb databases
var alldbs = db.getMongo().getDBNames();
for(var j = 0; j < alldbs.length; j++)
{
var db = db.getSiblingDB(alldbs[j]);
var collections = db.getCollectionNames();
for(var i = 0; i < collections.length; i++){
var name = collections[i];
if(name.substr(0, 6) != 'system'){
var c = db.getCollection(name).count() ;
print(db + ' ' + name + ' ' + c );
}
}
}
A compact way to list all Documents in all collections
db.getCollectionNames().forEach(coll => print(coll," ",db.getCollection(coll).count()))
// The current database to use.
use("DB_NAME");
const collections = db.getCollectionNames().sort();
for (const collection of collections) {
const count = db.getCollection(collection).count();
console.log(`${collection}: ${count}`);
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
i would like get the top 10 collections based on count (i mean in desc order). Please let me know how to achieve this.
i tried $orderby and sort .no luck.