Відповіді:
Ви можете зробити...
JavaScript (оболонка):
db.getCollectionNames()
Node.js:
db.listCollections()
Не JavaScript (лише оболонка):
show collections
Причина, яку я називаю не-JavaScript, полягає в тому, що:
$ 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
db.listCollections()
як відповідь, показану тут, і перевірити зеленим кольором? Інакше люди роблять ту саму помилку, яку я робив незліченну кількість разів, коли вони приходять до цієї відповіді - і намагаються використовувати, db.getCollectionNames
і помилка повертається db.collectionNames is not a function
.
db.getCollectionNames()
як і раніше правильна відповідь для оболонки.
> show collections
буде перераховано всі колекції у поточно вибраній БД, як зазначено у довідці командного рядка ( help
).
content 1145.586MB / 1506.855MB
наприклад.
Як перерахувати всі колекції для поточної бази даних, яку я використовую?
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
show tables
є дуже корисним для тих, хто надходить із реляційного dbms.
use
це використовувати базу даних, нічого спільного з колекціями
> show tables
Це дає такий же результат, як і відповідь Камерона.
Крім варіантів, запропонованих іншими людьми:
show collections // Output every collection
show tables
db.getCollectionNames() // Shows all collections as a list
Існує також інший спосіб, який може бути дуже корисним, якщо ви хочете знати, як створена кожна з колекцій (наприклад, це колекція з обмеженим розміром з певним розміром):
db.system.namespaces.find()
Спочатку вам потрібно використовувати базу даних, щоб показати всі колекції / таблиці всередині неї.
>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
Ви можете використовувати show tables
або show collections
.
Спробуйте:
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
Команда, яка використовується для відображення всіх колекцій у базі даних MongoDB, є
show collections
Перед запуском show collections
команди потрібно вибрати базу даних:
use mydb // mydb is the name of the database being selected
Щоб побачити всі бази даних, ви можете скористатися командою
show dbs // Shows all the database names present
Для отримання додаткової інформації відвідайте розділ Початок роботи .
Якщо ви хочете показати всі колекції з оболонки MongoDB (командного рядка), використовуйте помічник оболонки,
show collections
що показує всі колекції для поточної бази даних. Якщо ви хочете отримати зі своєї програми всі списки колекцій, тоді ви можете скористатися методом бази даних MongoDB
db.getCollectionNames()
Для отримання додаткової інформації про помічник оболонки MongoDB, ви можете ознайомитись з mongo
короткою довідкою Shell .
Наступні команди на 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);
});
Між трьома командами та цим фрагментом вам слід добре охопити!
Я думаю, що одна з найбільших плутанин полягає в різниці між тим, що ви можете зробити 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')
)
}
)
"
Примітка. Це дуже добре працює як однолінійний. (Але це виглядає жахливо на Stack Overflow.)
mongo --eval "db.getMongo().getDBNames().forEach(function(v, i){print(v+'\n\t'+db.getSiblingDB(v).getCollectionNames().join('\n\t'))})"
Увімкнути> = 2.x, ви можете зробити
db.listCollections()
На 1.x ви можете зробити
db.getCollectionNames()
db.getCollectionNames()
отримую, [ "users" ]
оскільки маю колекцію користувачів. Якщо я спробую, db.listCollections()
це призводить до[thread1] TypeError: db.listCollections is not a function : @(shell):1:1
Список усіх колекцій із mongo
оболонки:
- db.getCollectionNames ()
- показати колекції
- показати таблиці
Примітка. Колекції відображатимуться з поточної бази даних, де ви зараз перебуваєте
Для переходу на базу даних.
Автор:
використовувати приклад {your_database_name} :
use friends
звідки friends
назва вашої бази даних.
Тоді пиши:
db.getCollectionNames()
show collections
Це дасть вам назву колекцій.
> show dbs
anuradhfirst 0.000GB
local 0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
mongo
. Це запустить з'єднання.show dbs
команду. Це покаже всі наявні / доступні бази даних.database
потрібне. У сказаному вище anuradhfirst
. Потім бігайте use anuradhfirst
. Це перейде до потрібної бази даних.show collections
команду. Це покаже всю collections
внутрішню обрану базу даних.показати колекції
Зазвичай ця команда працює на оболонці MongoDB після переходу на базу даних.
Для розгортань MongoDB 3.0, використовуючи механізм зберігання WiredTiger, якщо ви запускаєте
db.getCollectionNames()
версію оболонки mongo до 3.0 або версію драйвера до версії 3.0, сумісної версії, даніdb.getCollectionNames()
не повернуть, навіть якщо існують колекції.
Для отримання детальної інформації, будь ласка, зверніться до цього .
show collections
або
show tables
або
db.getCollectionNames();
Я використовую listCollections
(підтримує MongoDB 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)})
Я відчуваю, що це забезпечує більшу гнучкість.
Детальніше: списокКолекції
1. show collections; // Display all collections
2. show tables // Display all collections
3. db.getCollectionNames(); // Return array of collection. Example :[ "orders", "system.profile" ]
Детальна інформація для кожної колекції:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
Список списку колекцій на основі пошукового рядка.
db.getCollectionNames().filter(function (CollectionName) { return /<Search String>/.test(CollectionName) })
Приклад: Знайдіть всю колекцію, що має імпорт "імпорт"
db.getCollectionNames().filter(function (CollectionName) { return /import/.test(CollectionName) })
Використовуйте таку команду з mongo
оболонки:
show collections