是否有可能在MongoDB中显示所有的集合及其内容?

唯一的办法是一个一个地展示吗?


当前回答

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中打印其元素。

其他回答

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中打印其元素。

这样做:

db.getCollectionNames().forEach(c => {
    db[c].find().forEach(d => {
        print(c); 
        printjson(d)
    })
})

如果你使用mongo shell,我更喜欢另一种方法:

首先,另一个回答:使用my_database_name然后:

db.getCollectionNames().map( (name) => ({[name]: db[name].find().toArray().length}) )

这个查询将显示如下内容:

[
        {
                "agreements" : 60
        },
        {
                "libraries" : 45
        },
        {
                "templates" : 9
        },
        {
                "users" : 19
        }
]

你可以使用db.getCollectionInfos()类似的方法,如果你有这么多数据,它是非常有用的。

这种方式:

db.collection_name.find().toArray().then(...function...)

进入终端/命令行后,按如下方式访问您想要使用的数据库/集合:

show dbs
use <db name>
show collections

选择您的集合并键入以下内容以查看该集合的所有内容:

db.collectionName.find()

更多信息请参阅MongoDB快速参考指南。