Как перечислить все коллекции в оболочке Монго?

682

В оболочке MongoDB, как мне отобразить все коллекции для текущей базы данных, которые я использую?

Теги:
mongo-shell
nosql

23 ответа

1095
Лучший ответ

Вы можете сделать...

JS (оболочка):

db.getCollectionNames()

node.js

db.listCollections()

не-JS (только для оболочки):

show collections

Я называю это не-JS, потому что:

$ 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"
]

Если вы действительно хотите получить этот сладкий, сладкий show collections вывод, вы можете:

$ mongo prodmongo/app --eval "db.getCollectionNames().join('\n')"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
Profiles
Unit_Info
  • 9
    Никогда не использовал этот - он дает массив строк, а не просто распечатывает их. Здорово.
  • 126
    show collections чисто
Показать ещё 4 комментария
381
> show collections

отобразит все коллекции в текущей выбранной БД, как указано в справке по командной строке (help).

  • 2
    Вы не можете использовать выходные данные show collection в скрипте, но можно сделать x = db.getCollectionNames (), чтобы получить массив всех имен.
  • 1
    Что означают два числа, перечисленные после каждой коллекции? Два типа размеров? content 1145.586MB / 1506.855MB .
Показать ещё 1 комментарий
246

как мне отобразить все коллекции для текущей базы данных, которые я использую?

3 Методы

  • show collections
  • show tables
  • db.getCollectionNames()

Чтобы перечислить все базы данных:

show dbs

Чтобы ввести или использовать данную базу данных:

use databasename

Чтобы перечислить все коллекции:

show collections

Вывод:

collection1  
collection2  
system.indexes

(или)

show tables

Вывод:

collection1  
collection2  
system.indexes

(или)

db.getCollectionNames()

Вывод:

[ "collection1", "collection2", "system.indexes" ]

Чтобы ввести или использовать данную коллекцию

use collectionname
  • 1
    +1 за самый полный ответ. иллюстрирование show tables весьма полезно для тех, кто приходит из реляционного dbms-фона.
  • 7
    Нет, use это использовать базу данных, ничего общего с коллекциями
Показать ещё 2 комментария
49

> show tables

Он дает тот же результат, что и ответ Камерона.

28

Помимо вариантов, предложенных другими людьми:

show collections  //output every collection
show tables
db.getCollectionNames() //shows all collections as a list

Существует и другой способ, который может быть очень полезен, если вы хотите знать, как создавалась каждая из коллекций (например, это ограниченная коллекция с определенным размером)

db.system.namespaces.find()
20

Сначала вам нужно использовать базу данных, чтобы показать все коллекции/таблицы внутри нее.

>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
14

вы можете использовать show tables или show collections

  • 1
    @LalitKumarB: Почему это так? Основываясь на других ответах, это подходящий ответ для этого, который действительно может работать. По крайней мере, это попытка ответить. Что это, так это ответ на очень старый вопрос, на который уже выложено несколько правильных ответов.
13

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
11

Команда, используемая для отображения всей коллекции в базе данных mongoDb,

show collections 

Перед запуском команды show collections вам нужно выбрать базу данных

use mydb //mydb is the name of the database being selected

Чтобы просмотреть все базы данных, вы можете использовать команду

show dbs // shows all the database names present 

Для получения дополнительной информации перейдите по этой ссылке: http://docs.mongodb.org/manual/tutorial/getting-started/

10

Если вы хотите показать все коллекции из оболочки mongodb (командной строки), используйте shell helper

show collections

который отображает все коллекции текущей базы данных. Если вы хотите получить весь список коллекций из своего приложения, вы можете использовать метод базы данных mongodb

db.getCollectionNames()

Для получения дополнительной информации о помощнике оболочки mongodb вы можете видеть http://docs.mongodb.org/manual/reference/mongo-shell/

9

Следующие команды на mongoshell являются общими

show databases
show collections

Кроме того,

show dbs
use mydb
db.getCollectionNames()

Иногда полезно видеть все коллекции, а также индексы в коллекциях, которые являются частью общего пространства имен:

Вот как вы это сделаете:

 db.getCollectionNames().forEach(function(collection) {
indexes = db[collection].getIndexes();
print("Indexes for " + collection + ":");
printjson(indexes);
});

Между тремя командами и этим фрагментом вы должны быть хорошо охвачены!

3

Я использую:

 > show collections

но другой вариант использует метод getCollectionNames(), который возвращает массив, содержащий все коллекции в существующей базе данных.

db.getCollectionNames()
3

Я думаю, что одним из самых больших недоразумений является разница между тем, что вы можете сделать с mongo (или интерактивной/гибридной оболочкой) по сравнению с mongo --eval (или чистой оболочкой javascript). Я поддерживаю эти полезные документы:

Вот пример сценариев, которые вы могли бы сделать с помощью команд show:

# 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')
            )
        }
    )
"

Примечание. Это работает очень хорошо, как oneliner. (Но выглядит ужасно на StackOverflow.)

mongo --eval "db.getMongo().getDBNames().forEach(function(v, i){print(v+'\n\t'+db.getSiblingDB(v).getCollectionNames().join('\n\t'))})"
2

Для переключения в базу данных. от:- используйте {your_database_name} пример:

use friends

где друзья - это имя вашей базы данных.

тогда напишите: -

db.getCollectionNames()
show collections

это даст вам имя коллекций.

2

Вкл >= 2.x, вы можете сделать

db.listCollections()

В 1.x вы можете сделать

db.getCollectionNames()
  • 1
    как указал @JohnnyHK , это относится только к драйверу узла, а не к монго-оболочке для каждого OP-вопроса
  • 0
    @JeffPuckettII Я не использую Node. Это прекрасно работает для меня внутри оболочки монго. Интересно, почему бы и нет?
Показать ещё 1 комментарий
1

Список всех коллекций из оболочки Монго:

  • db.getCollectionNames()
  • показать коллекции
  • показать таблицы

Примечание: Коллекции будут показывать из текущей базы данных, где вы находитесь в данный момент

1

показать коллекции

эта команда обычно работает на оболочке mongo после того, как вы переключились на базу данных.

0

Я использую listCollections (поддерживает mongo 3.0 и выше) для этой цели.

пример:

db.runCommand({ listCollections: 1, filter: {}, nameOnly: true });

Чтобы получить больше информации, как индекс коллекции:

db.runCommand({ listCollections: 1, filter: {}, nameOnly: false });

Чтобы напечатать только имена коллекций:

db.runCommand({ listCollections: 1, filter: {}, nameOnly: true }).cursor.firstBatch.forEach(v => {print(v.name)})

Я чувствую, что это обеспечивает большую гибкость.

читать больше: https://docs.mongodb.com/manual/reference/command/listCollections/

0
 1. show collections; //Display all collection
 2. show tables     //Display all collection
 3. db.getCollectionNames();   // Retuen array of collection Example :[ "orders", "system.profile" ]

Подробная информация о каждой коллекции

db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
  • Для пользователей с требуемым доступом (привилегиями, которые предоставляют действие listCollections для базы данных), метод перечисляет имена всех коллекций для базы данных.
  • Для пользователей без требуемого доступа метод перечисляет только коллекции, для которых у пользователей есть привилегии. Например, если пользователь найдет определенную коллекцию в базе данных, метод вернет только эту коллекцию.
0

используйте следующую команду из оболочки Монго: - показать коллекции

0

Использование - показать коллекции Это работает на оболочке манго.

0

Для развертываний MongoDB 3.0 с использованием механизма хранения WiredTiger, если вы запускаете db.getCollectionNames() из версии оболочки монго до версии 3.0 или версии драйвера до версии 3.0, совместимой с версией, db.getCollectionNames() не вернет никаких данных, даже если есть существующих коллекций.

Для получения дополнительной информации см. this

0
> show dbs        
anuradhfirst  0.000GB
local         0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
  • подключиться к базе данных mongo с помощью mongo, это запустит соединение.
  • затем запустите команду show dbs, это покажет вам всю доступную/доступную базу данных.
  • затем выберите database, который вы хотите. Наверху это anuradhfirst, затем запустите use anuradhfirst.this переключится на нужную базу данных.
  • затем запустите команду show collections, это отобразит все collections внутри выбранной вами базы данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню