在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 // 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
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
如何列出当前使用的数据库的所有集合?
三种方法
显示表显示表格db.getCollectionNames()
要列出所有数据库:
show dbs
要输入或使用给定数据库:
use databasename
要列出所有集合:
show collections
输出:
集合1集合2系统索引
(or)
show tables
输出:
集合1集合2系统索引
(or)
db.getCollectionNames()
输出:
[“collection1”,“collection2”,“system.indexs”]
输入或使用给定集合
use collectionname
如果要显示MongoDB shell(命令行)中的所有集合,请使用shell助手,
show collections
显示当前数据库的所有集合。如果您想从应用程序中获取所有集合列表,那么可以使用MongoDB数据库方法
db.getCollectionNames()
有关MongoDB shell助手的更多信息,请参阅mongoShell快速参考。
用于显示MongoDB数据库中所有集合的命令是
show collections
在运行show collections命令之前,必须选择数据库:
use mydb // mydb is the name of the database being selected
要查看所有数据库,可以使用以下命令
show dbs // Shows all the database names present
有关详细信息,请参阅入门。
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);
});
在这三个命令和这段代码之间,您应该很熟悉!
> show dbs
anuradhfirst 0.000GB
local 0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
使用mongo连接MongoDB数据库。这将启动连接。然后运行showdbs命令。这将显示所有退出/可用的数据库。然后选择所需的数据库。在上文中,它是第一个。然后运行use anuradhfirst。这将切换到所需的数据库。然后运行showcollections命令。这将显示所选数据库中的所有集合。
我认为最大的困惑之一是使用mongo(或交互式/混合shell)与mongo-eval(或纯JavaScript shell)之间的区别。我将这些有用的文档放在手边:
交互式蒙哥和脚本蒙哥的区别Mongo 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')
)
}
)
"
注意:这是一个很好的单行程序。(但在堆栈溢出上看起来很糟糕。)
mongo --eval "db.getMongo().getDBNames().forEach(function(v, i){print(v+'\n\t'+db.getSiblingDB(v).getCollectionNames().join('\n\t'))})"
对于使用WiredTiger存储引擎的MongoDB 3.0部署,如果从mongo shell的一个版本运行db.getCollectionNames()3.0之前的版本或3.0兼容版本之前的驱动程序版本,db.getCollectionNames()将不返回任何数据,即使存在现有集合。
有关详细信息,请参阅。
用于切换到数据库。
By:
使用{your_database_name}示例:
use friends
其中friends是数据库的名称。
然后写下:
db.getCollectionNames()
show collections
这将为您提供集合的名称。
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 } )
对于具有所需访问权限(授予数据库listCollections操作的权限)的用户,该方法将列出数据库的所有集合的名称。对于没有所需访问权限的用户,该方法仅列出用户具有权限的集合。例如,如果用户在数据库中找到了特定集合,则该方法将仅返回该集合。
根据搜索字符串列出集合列表。
db.getCollectionNames().filter(function (CollectionName) { return /<Search String>/.test(CollectionName) })
示例:查找名称中包含“import”的所有集合
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)})
我觉得这提供了更多的灵活性。
阅读更多:listCollections
推荐文章
- js的Mongoose.js字符串到ObjectId函数
- mongodb中使用ISODate的日期查询似乎无法正常工作
- 如何更新文档数组中的对象(嵌套更新)
- 在猫鼬模式中添加created_at和updated_at字段
- 如何更新mongodb中的多个数组元素
- MongoDB和Mongoose的区别
- MongoDB在v4之前不兼容ACID意味着什么?
- 显示所有集合中的所有内容
- MongoDB:更新一个字段上的每个文档
- 我如何在MongoDB中部分更新一个对象,以便新对象将覆盖/合并现有的一个
- MongoDB的命名约定是什么?
- MongoDB在尝试插入整数时插入浮点数
- 通过将useNewUrlParser设置为true来避免“当前URL字符串解析器已弃用”警告
- 如何查询嵌套对象?
- NoSQL (MongoDB) vs Lucene(或Solr)作为您的数据库