In the MongoDB shell, how do I list all collections for the current database that I'm using?
23 Answers
You can do...
JavaScript (shell):
db.getCollectionNames()
Node.js:
db.listCollections()
Non-JavaScript (shell only):
show collections
The reason I call that non-JavaScript is because:
$ mongo prodmongo/app --eval "show collections"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
2016-10-26T19:34:34.886-0400 E QUERY [thread1] SyntaxError: missing ; before statement @(shell eval):1:5
$ mongo prodmongo/app --eval "db.getCollectionNames()"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
[
"Profiles",
"Unit_Info"
]
If you really want that sweet, sweet show collections output, you can:
$ mongo prodmongo/app --eval "db.getCollectionNames().join('\n')"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
Profiles
Unit_Info
6 Comments
db.listCollections() as the answer shown here and checked in green? Otherwise people are making the same mistake I did countless times when they come to this answer - and attempt to use db.getCollectionNames and the error comes back db.collectionNames is not a function.db.getCollectionNames() is still the right answer for the shell.node answer here is not well placed! Please look at the google result rank and people like me come here with a node env wanting to have a quick solution. Node is widely used with mongo. But nevertheless, the node solution here does not work for me;(> show collections
will list all the collections in the currently selected DB, as stated in the command line help (help).
3 Comments
content 1145.586MB / 1506.855MB for example.How do I list all collections for the current database that I'm using?
Three methods
show collectionsshow tablesdb.getCollectionNames()
To list all databases:
show dbs
To enter or use a given database:
use databasename
To list all collections:
show collections
Output:
collection1 collection2 system.indexes
(or)
show tables
Output:
collection1 collection2 system.indexes
(or)
db.getCollectionNames()
Output:
[ "collection1", "collection2", "system.indexes" ]
To enter or use given collection
use collectionname
2 Comments
use is to use a database, nothing to do with collectionsApart from the options suggested by other people:
show collections // Output every collection
show tables
db.getCollectionNames() // Shows all collections as a list
There is also another way which can be really handy if you want to know how each of the collections was created (for example, it is a capped collection with a particular size):
db.system.namespaces.find()
Comments
1. show collections; // Display all collections
2. show tables // Display all collections
3. db.getCollectionNames(); // Return array of collection. Example :[ "orders", "system.profile" ]
Detailed information for every collection:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
- For users with the required access (privileges that grant listCollections action on the database), the method lists the names of all collections for the database.
- For users without the required access, the method lists only the collections for which the users has privileges. For example, if a user has find on a specific collection in a database, the method would return just that collection.
To list collections list based on a search string.
db.getCollectionNames().filter(function (CollectionName) { return /<Search String>/.test(CollectionName) })
Example: Find all collection having "import" in the name
db.getCollectionNames().filter(function (CollectionName) { return /import/.test(CollectionName) })
3 Comments
You can use show tables or show collections.
1 Comment
I think one of the biggest confusions is the difference between what you can do with mongo (or an interactive/hybrid shell) vs. mongo --eval (or a pure JavaScript shell). I keep these helpful documents handy:
Here is an example of scripting what you might otherwise do with show commands:
# List all databases and the collections in them
mongo --eval "
db.getMongo().getDBNames().forEach(
function(v, i){
print(
v + '\n\t' +
db.getSiblingDB(v).getCollectionNames().join('\n\t')
)
}
)
"
Note: That works really well as a one-liner. (But it looks terrible on Stack Overflow.)
mongo --eval "db.getMongo().getDBNames().forEach(function(v, i){print(v+'\n\t'+db.getSiblingDB(v).getCollectionNames().join('\n\t'))})"
Comments
The following commands on mongoshell are common.
show databases
show collections
Also,
show dbs
use mydb
db.getCollectionNames()
Sometimes it's useful to see all collections as well as the indexes on the collections which are part of the overall namespace:
Here's how you would do that:
db.getCollectionNames().forEach(function(collection) {
indexes = db[collection].getIndexes();
print("Indexes for " + collection + ":");
printjson(indexes);
});
Between the three commands and this snippet, you should be well covered!
Comments
The command used for displaying all the collections in the MongoDB database is
show collections
Before running the show collections command you have to select the database:
use mydb // mydb is the name of the database being selected
To see all the databases, you can use the command
show dbs // Shows all the database names present
For more information, visit see Getting Started.
Comments
If you want to show all collections from the MongoDB shell (command line), use the shell helper,
show collections
that shows all collections for the current database. If you want to get all collection lists from your application then you can use the MongoDB database method
db.getCollectionNames()
For more information about the MongoDB shell helper, you can see mongo Shell Quick Reference.
Comments
> show dbs
anuradhfirst 0.000GB
local 0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
- connect with the MongoDB database using
mongo. This will start the connection. - then run
show dbscommand. This will show you all exiting/available databases. - then select the
databaseyou want. In the above it isanuradhfirst. Then runuse anuradhfirst. This will switch to the database you want. - then run
show collectionscommand. This will show all thecollectionsinside your selected database.
1 Comment
For switching to the database.
By:
use {your_database_name} example:
use friends
where friends is the name of your database.
Then write:
db.getCollectionNames()
show collections
This will give you the name of collections.
1 Comment
On >=2.x, you can do
db.listCollections()
On 1.x you can do
db.getCollectionNames()
3 Comments
db.getCollectionNames() I get [ "users" ] because I have a users collection. If I try db.listCollections() then it results in [thread1] TypeError: db.listCollections is not a function : @(shell):1:1List all collections from the mongo shell:
- db.getCollectionNames()
- show collections
- show tables
Note: Collections will show from current database where you are in currently
1 Comment
For MongoDB 3.0 deployments using the WiredTiger storage engine, if you run
db.getCollectionNames()from a version of the mongo shell before 3.0 or a version of the driver prior to 3.0 compatible version,db.getCollectionNames()will return no data, even if there are existing collections.
For further details, please refer to this.
1 Comment
Use the following command from the mongo shell:
show collections
1 Comment
I use listCollections (supports MongoDB 3.0 and up) for this purpose.
Example:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true });
To fetch more information like the index of the collection:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: false });
To print just the collection names:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true }).cursor.firstBatch.forEach(v => {print(v.name)})
I feel this provides more flexibility.
Read more: listCollections
Comments
show collections
or
show tables
or
db.getCollectionNames();