是否可以在 MongoDB 中显示所有集合及其内容?
是不是只能一一显示?
进入终端/命令行后,访问要使用的数据库/集合,如下所示:
show dbs
use <db name>
show collections
选择您的收藏并键入以下内容以查看该收藏的所有内容:
db.collectionName.find()
MongoDB Quick Reference Guide 上的更多信息。
var collections = db.getCollectionNames();
for(var i = 0; i< collections.length; i++){
print('Collection: ' + collections[i]); // print the name of each collection
db.getCollection(collections[i]).find().forEach(printjson); //and then print the json of each of its elements
}
我认为这个脚本可能会得到你想要的。它打印每个集合的名称,然后在 json 中打印其元素。
在编写以下查询之前,首先进入您的 cmd 或 PowerShell
TYPE:
mongo //To get into MongoDB shell
use <Your_dbName> //For Creating or making use of existing db
要列出所有集合名称,请使用以下选项中的任何一个:-
show collections //output every collection
OR
show tables
OR
db.getCollectionNames() //shows all collections as a list
要显示所有集合内容或数据,请使用以下列出的由 Bruno_Ferreira 发布的代码。
var collections = db.getCollectionNames();
for(var i = 0; i< collections.length; i++) {
print('Collection: ' + collections[i]); // print the name of each collection
db.getCollection(collections[i]).find().forEach(printjson); //and then print the json of each of its elements
}
这边走:
db.collection_name.find().toArray().then(...function...)
这将做:
db.getCollectionNames().forEach(c => {
db[c].find().forEach(d => {
print(c);
printjson(d)
})
})
如果您使用的是 mongo
shell,我更喜欢另一种方法:
首先作为另一个答案:use my_database_name
然后:
db.getCollectionNames().map( (name) => ({[name]: db[name].find().toArray().length}) )
此查询将向您显示如下内容:
[
{
"agreements" : 60
},
{
"libraries" : 45
},
{
"templates" : 9
},
{
"users" : 19
}
]
您可以使用与 db.getCollectionInfos()
类似的方法,如果您有这么多数据和也很有帮助。
count()
而不是 find()
:db.getCollectionNames().map( (name) => ({[name]: db[name].count()}) )
db.collectionName.find().pretty()
db["collection-name"].find()