如何在MongoDB shell中列出所有集合?

在MongoDB shell中,如何列出我正在使用的当前数据库的所有集合?

886642 次浏览
> show collections

将列出当前选定数据库中的所有集合,如命令行帮助(help)中所述。

你可以做…

JavaScript(shell):

db.getCollectionNames()

Node.js:

db.listCollections()

非JavaScript(仅限shell):

show collections

我称之为非JavaScript的原因是:

$ mongo prodmongo/app --eval "show collections"MongoDB shell version: 3.2.10connecting to: prodmongo/app2016-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.10connecting to: prodmongo/app["Profiles","Unit_Info"]

如果你真的想要甜蜜的show collections输出,你可以:

$ mongo prodmongo/app --eval "db.getCollectionNames().join('\n')"MongoDB shell version: 3.2.10connecting to: prodmongo/appProfilesUnit_Info

> show tables

这与卡梅伦的回答结果相同。

除了其他人建议的选项之外:

show collections  // Output every collectionshow tablesdb.getCollectionNames() // Shows all collections as a list

如果您想知道每个集合是如何创建的(例如,它是具有特定大小的封顶集合),还有另一种方法非常方便:

db.system.namespaces.find()

首先,您需要使用数据库来显示其中的所有集合/表。

>show dbsusers 0.56787GBtest (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

尝试:

help // To show all help methodsshow dbs  // To show all dbsuse dbname  // To select your dbshow collections // To show all collections in selected db

如何列出我正在使用的当前数据库的所有集合?

三种方法

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

列出所有数据库

show dbs

输入或使用给定的数据库:

use databasename

列出所有收藏

show collections

输出:

collection1collection2system.indexes

(或)

show tables

输出:

collection1collection2system.indexes

(或)

db.getCollectionNames()

输出:

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

输入或使用给定的集合

use collectionname

如果您想显示MongoDB shell(命令行)中的所有集合,请使用shell助手,

show collections

显示当前数据库的所有集合。如果您想从应用程序中获取所有集合列表,那么您可以使用MongoDB数据库方法

db.getCollectionNames()

有关MongoDB shell帮助程序的更多信息,请参阅#0 Shell快速参考

用于显示MongoDB数据库中所有集合的命令是

show collections

在运行show collections命令之前,您必须选择数据库:

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

要查看所有数据库,您可以使用命令

show dbs // Shows all the database names present

有关更多信息,请参阅开始使用

您可以使用show tablesshow collections

在>=2. x上,你可以这样做

db.listCollections()

在1. x你可以做

db.getCollectionNames()

以下命令在mongoshell上很常见。

show databasesshow collections

还有,

show dbsuse mydbdb.getCollectionNames()

有时查看所有集合以及作为整体命名空间一部分的集合上的索引很有用:

以下是你如何做到这一点:

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

在这三个命令和这个代码片段之间,你应该很好地覆盖了!

> show dbsanuradhfirst  0.000GBlocal         0.000GB> use anuradhfirstswitched to db anuradhfirst> show collectionsrecord
  • 使用mongo连接MongoDB数据库。这将启动连接。
  • 然后运行show dbs命令。这将显示您所有退出/可用的数据库。
  • 然后选择您想要的database。在上面是anuradhfirst。然后运行use anuradhfirst。这将切换到您想要的数据库。
  • 然后运行show collections命令。这将显示所选数据库中的所有collections

展示收藏

一旦您切换到数据库,此命令通常适用于MongoDB shell。

我认为最大的困惑之一是你可以用mongo(或交互式/混合shell)和mongo --eval(或纯JavaScript shell)做什么之间的区别。我把这些有用的文档放在手边:

以下是一个脚本示例,您可以使用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'))})"

对于使用WiredTiger存储引擎的MongoDB 3.0部署,如果从mongoshell的一个版本运行db.getCollectionNames()3.0之前的驱动程序版本或3.0之前的兼容版本,db.getCollectionNames()不会返回任何数据,即使有现有收藏。

有关详细信息,请参阅这个

用于切换到数据库。

通过:

使用{your_database_name}示例:

use friends

其中friends是数据库的名称。

然后写:

db.getCollectionNames()show collections

这将为您提供集合的名称。

使用mongo shell中的以下命令:

show collections

列出mongo shell中的所有集合:

  • db.get集合名称()
  • 展示收藏
  • 显示表格

注意:集合将从当前数据库中显示您所在的位置目前

 1. show collections; // Display all collections2. show tables     // Display all collections3. db.getCollectionNames();   // Return array of collection. Example :[ "orders", "system.profile" ]

每个收藏的详细信息:

db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
  • 对于具有所需访问权限的用户(授予对数据库进行listColltions操作的权限),该方法列出数据库的所有集合的名称。
  • 对于没有所需访问权限的用户,该方法仅列出用户具有权限的集合。例如,如果用户对数据库中的特定集合进行了查找,则该方法将仅返回该集合。

根据搜索字符串列出集合列表。

db.getCollectionNames().filter(function (CollectionName) { return /<Search String>/.test(CollectionName) })

示例:查找名称中包含“导入”的所有集合

db.getCollectionNames().filter(function (CollectionName) { return /import/.test(CollectionName) })

为此,我使用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)})

我认为这提供了更大的灵活性。

阅读更多:list

show collections

show tables

db.getCollectionNames();

如果有人使用Python&PyMongo

db.list_collection_names()