Answers:
你可以做...
JavaScript(外壳):
db.getCollectionNames()
Node.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"
]
如果您真的想要那种甜美,甜美的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()
仍然是shell的正确答案。
> 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 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 Shell(命令行)中的所有集合,请使用Shell帮助器,
show collections
显示当前数据库的所有集合。如果要从应用程序中获取所有收集列表,则可以使用MongoDB数据库方法
db.getCollectionNames()
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')
)
}
)
"
注意:单线工作确实很好。(但是在堆栈溢出时看起来很糟糕。)
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
shell中的所有集合:
- 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
所选数据库的所有内部内容。对于使用WiredTiger存储引擎的MongoDB 3.0部署,如果
db.getCollectionNames()
从3.0之前的mongo shell版本或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)})
我觉得这提供了更大的灵活性。
阅读更多:listCollections
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) })
示例: 查找名称中带有“ import”的所有集合
db.getCollectionNames().filter(function (CollectionName) { return /import/.test(CollectionName) })