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


当前回答

你可以。。。

JavaScript(外壳):

db.getCollectionNames()

节点js:

db.listCollections()

非JavaScript(仅限shell):

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

如果你真的想得到甜蜜的节目集输出,你可以:

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

其他回答

> show collections

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

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

show collections  // Output every collection
show tables
db.getCollectionNames() // Shows all collections as a list

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

db.system.namespaces.find()

在>=2.x时,您可以

db.listCollections()

在1.x上,您可以做到

db.getCollectionNames()

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

有关详细信息,请参阅。

使用mongo shell中的以下命令:

show collections