No shell do MongoDB, como listar todas as coleções do banco de dados atual que estou usando?
No shell do MongoDB, como listar todas as coleções do banco de dados atual que estou usando?
Respostas:
Você pode fazer...
JavaScript (shell):
db.getCollectionNames()
Node.js:
db.listCollections()
Não JavaScript (somente shell):
show collections
O motivo pelo qual chamo isso de não JavaScript é porque:
$ 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"
]
Se você realmente deseja esse show collections
resultado, você pode:
$ mongo prodmongo/app --eval "db.getCollectionNames().join('\n')"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
Profiles
Unit_Info
db.listCollections()
a resposta mostrada aqui e verificada em verde? Caso contrário, as pessoas estão cometendo o mesmo erro que cometi inúmeras vezes quando chegam a essa resposta - e tentam usar db.getCollectionNames
e o erro volta db.collectionNames is not a function
.
db.getCollectionNames()
ainda é a resposta certa para o shell.
> show collections
listará todas as coleções no banco de dados selecionado no momento, conforme indicado na linha de comando help ( help
).
content 1145.586MB / 1506.855MB
por exemplo.
Como faço para listar todas as coleções do banco de dados atual que estou usando?
show collections
show tables
db.getCollectionNames()
show dbs
use databasename
show collections
Resultado:
collection1 collection2 system.indexes
(ou)
show tables
Resultado:
collection1 collection2 system.indexes
(ou)
db.getCollectionNames()
Resultado:
[ "collection1", "collection2", "system.indexes" ]
use collectionname
show tables
é bastante útil para quem vem de um fundo de dbms relacionais.
use
é a utilização de uma base de dados, nada a ver com coleções
> show tables
Dá o mesmo resultado que a resposta de Cameron.
Além das opções sugeridas por outras pessoas:
show collections // Output every collection
show tables
db.getCollectionNames() // Shows all collections as a list
Também há outra maneira que pode ser realmente útil se você quiser saber como cada uma das coleções foi criada (por exemplo, é uma coleção limitada com um tamanho específico):
db.system.namespaces.find()
Primeiro, você precisa usar um banco de dados para mostrar todas as coleções / tabelas dentro dele.
>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
Você pode usar show tables
ou show collections
.
Tentar:
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
O comando usado para exibir todas as coleções no banco de dados MongoDB é
show collections
Antes de executar o show collections
comando, você deve selecionar o banco de dados:
use mydb // mydb is the name of the database being selected
Para ver todos os bancos de dados, você pode usar o comando
show dbs // Shows all the database names present
Para mais informações, visite o artigo Primeiros passos .
Se você deseja mostrar todas as coleções do shell do MongoDB (linha de comando), use o assistente de shell,
show collections
que mostra todas as coleções do banco de dados atual. Se você deseja obter todas as listas de coleções do seu aplicativo, pode usar o método de banco de dados MongoDB
db.getCollectionNames()
Para obter mais informações sobre o auxiliar de shell do MongoDB, consulte mongo
Referência rápida do shell .
Os seguintes comandos no mongoshell são comuns.
show databases
show collections
Além disso,
show dbs
use mydb
db.getCollectionNames()
Às vezes, é útil ver todas as coleções, bem como os índices nas coleções que fazem parte do espaço para nome geral:
Aqui está como você faria isso:
db.getCollectionNames().forEach(function(collection) {
indexes = db[collection].getIndexes();
print("Indexes for " + collection + ":");
printjson(indexes);
});
Entre os três comandos e esse trecho, você deve estar bem coberto!
Eu acho que uma das maiores confusões é a diferença entre o que você pode fazer com mongo
(ou um shell interativo / híbrido) vs. mongo --eval
(ou um shell JavaScript puro). Eu mantenho estes documentos úteis à mão:
Aqui está um exemplo de script que você poderia fazer com os show
comandos:
# 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')
)
}
)
"
Nota: Isso funciona muito bem como uma linha. (Mas parece terrível no Stack Overflow.)
mongo --eval "db.getMongo().getDBNames().forEach(function(v, i){print(v+'\n\t'+db.getSiblingDB(v).getCollectionNames().join('\n\t'))})"
Em> = 2.x, você pode fazer
db.listCollections()
No 1.x você pode fazer
db.getCollectionNames()
db.getCollectionNames()
recebo [ "users" ]
porque tenho uma coleção de usuários. Se eu tentar db.listCollections()
, em seguida, que resulta em[thread1] TypeError: db.listCollections is not a function : @(shell):1:1
Liste todas as coleções do mongo
shell:
- db.getCollectionNames ()
- mostrar coleções
- mostrar tabelas
Nota: As coleções serão exibidas no banco de dados atual em que você está atualmente
Para mudar para o banco de dados.
De:
use o exemplo {your_database_name} :
use friends
Onde friends
é o nome do seu banco de dados.
Então escreva:
db.getCollectionNames()
show collections
Isso fornecerá o nome das coleções.
> show dbs
anuradhfirst 0.000GB
local 0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
mongo
. Isso iniciará a conexão.show dbs
comando. Isso mostrará todos os bancos de dados existentes / disponíveis.database
você deseja. No acima é anuradhfirst
. Então corra use anuradhfirst
. Isso mudará para o banco de dados que você deseja.show collections
comando. Isso mostrará todo o collections
interior do banco de dados selecionado.mostrar coleções
Esse comando geralmente funciona no shell do MongoDB depois que você alterna para o banco de dados.
Para implantações do MongoDB 3.0 usando o mecanismo de armazenamento WiredTiger, se você executar a
db.getCollectionNames()
partir de uma versão do mongo shell anterior à 3.0 ou de uma versão do driver anterior à versão compatível com 3.0,db.getCollectionNames()
não retornará dados, mesmo se houver coleções existentes.
Para mais detalhes, consulte isso .
show collections
ou
show tables
ou
db.getCollectionNames();
Eu uso listCollections
(suporta MongoDB 3.0 e superior) para esse fim.
Exemplo:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true });
Para buscar mais informações como o índice da coleção:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: false });
Para imprimir apenas os nomes da coleção:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true }).cursor.firstBatch.forEach(v => {print(v.name)})
Eu sinto que isso fornece mais flexibilidade.
Leia mais: listCollections
1. show collections; // Display all collections
2. show tables // Display all collections
3. db.getCollectionNames(); // Return array of collection. Example :[ "orders", "system.profile" ]
Informações detalhadas para cada coleção:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
Para listar a lista de coleções com base em uma sequência de pesquisa.
db.getCollectionNames().filter(function (CollectionName) { return /<Search String>/.test(CollectionName) })
Exemplo: encontre toda a coleção com "importação" no nome
db.getCollectionNames().filter(function (CollectionName) { return /import/.test(CollectionName) })
Use o seguinte comando do mongo
shell:
show collections