Можно ли показать все коллекции и их содержимое в MongoDB?
Это единственный способ показать один за другим?
Можно ли показать все коллекции и их содержимое в MongoDB?
Это единственный способ показать один за другим?
Как только вы находитесь в терминале/командной строке, получите доступ к базе данных/коллекции, которую вы хотите использовать, следующим образом:
show dbs
use <db name>
show collections
выберите свою коллекцию и введите следующее, чтобы просмотреть все содержимое этой коллекции:
db.collectionName.find()
Подробнее здесь, в Краткое справочное руководство MongoDB.
Шаг 1: Просмотрите все ваши базы данных:
show dbs
Шаг 2: Выберите базу данных
use your_database_name
Шаг 3: Показать коллекции
show collections
Это перечислит все коллекции в выбранной вами базе данных.
Шаг 4: Просмотреть все данные
db.collection_name.find()
или же
db.collection_name.find().pretty()
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
}
Я думаю, что этот script может получить то, что вы хотите. Он печатает имя каждой коллекции, а затем печатает ее элементы в 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
:
Сначала ответят другие: use my_database_name
затем:
db.getCollectionNames().map( (name) => ({[name]: db[name].find().toArray().length}) )
Этот запрос покажет вам что-то вроде этого:
[
{
"agreements" : 60
},
{
"libraries" : 45
},
{
"templates" : 9
},
{
"users" : 18
}
]
Вы можете использовать аналогичный подход с db.getCollectionInfos()
это очень полезно, если у вас так много данных.