In the MongoDB shell, how do I list all collections for the current database that I'm using?
问题:
回答1:
You can do...
JS (shell):
db.getCollectionNames()
node.js:
db.listCollections()
non-JS (shell only):
show collections
The reason I call that non-JS 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
回答2:
> show collections
will list all the collections in the currently selected DB, as stated in the command line help (help
).
回答3:
how do I list all collections for the current database that I'm using?
3 Methods
show collections
show tables
db.getCollectionNames()
To list all databases:
show dbs
To enter or use 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
回答4:
> show tables
It gives the same result as Cameron's answer.
回答5:
Apart 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()
回答6:
First you need to use a database to show all collection/tables inside it.
>show dbs
users 0.56787GB
test (empty)
>db.test.help() // this will give you all the function which can be used with this db
>use users
>show tables //will show all the collection in the db
回答7:
you can use show tables
or show collections
回答8:
Try:
help // To show all help methods
show dbs // To show all dbs
use dbname // To select your db
show collections // To show all collections in selected db
回答9:
The command used for displaying all the collection 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 info visit this link : http://docs.mongodb.org/manual/tutorial/getting-started/
回答10:
If you want to show all collections from mongodb shell (command line), use shell helper
show collections
that show all collections for current database. If you want to get all collection list from your application then you can use mongodb database method
db.getCollectionNames()
For more info mongodb shell helper you can seee http://docs.mongodb.org/manual/reference/mongo-shell/
回答11:
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 3 commands and this snippet you should be well covered!
回答12:
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:
- Differences Between Interactive and Scripted mongo
- Mongo Shell Command Helpers
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 oneliner. (But looks terrible on StackOverflow.)
mongo --eval "db.getMongo().getDBNames().forEach(function(v, i){print(v+'\n\t'+db.getSiblingDB(v).getCollectionNames().join('\n\t'))})"
回答13:
On >=2.x, you can do
db.listCollections()
On 1.x you can do
db.getCollectionNames()
回答14:
For switch 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.
回答15:
show collections
this command usually works on mongo shell once you have switched to the database.
回答16:
List all collections from the mongo shell :
- db.getCollectionNames()
- show collections
- show tables
Note : Collections will show from current database where you are in currently
回答17:
> show dbs
anuradhfirst 0.000GB
local 0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
- connect with mongo database using
mongo
, this will start the connection. - then run
show dbs
command, this will show you all exiting/available database. - then select the
database
you want.in above it isanuradhfirst
, then runuse anuradhfirst
.this will switch to the database you want. - then run
show collections
command, this will show all thecollections
inside your selected database.
回答18:
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
回答19:
use following command from mongo shell :- show collections
回答20:
1. show collections; //Display all collection
2. show tables //Display all collection
3. db.getCollectionNames(); // Retuen array of collection Example :[ "orders", "system.profile" ]
Details information of 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.
回答21:
I use listCollections
(supports mongo 3.0 and up) for this purpose.
example:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true });
To fetch more info like 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 provide more flexibility.
read more: https://docs.mongodb.com/manual/reference/command/listCollections/