MongoDB Afficher tous les contenus de toutes les collections

161

Est-il possible d'afficher toutes les collections et son contenu dans MongoDB?

Est-ce la seule façon de montrer un par un?

Reno
la source

Réponses:

263

Une fois que vous êtes dans le terminal / la ligne de commande, accédez à la base de données / collection que vous souhaitez utiliser comme suit:

show dbs
use <db name>
show collections

choisissez votre collection et tapez ce qui suit pour voir tout le contenu de cette collection:

db.collectionName.find()

Plus d'informations ici sur le Guide de référence rapide MongoDB .

requin
la source
Veuillez indiquer ceci comme la bonne réponse. Vous ne pouvez afficher TOUS les contenus de TOUTES les collections qu'en écrivant du code, pas en
effectuant une
19
Si vous avez besoin de ranger visuellement la collection présentée à vous, je vous recommande également: db.collectionName.find().pretty()
Steven Vintimille
2
Gardez à l'esprit que cela ne fonctionne pas si vous avez certains caractères (comme un trait d'union) dans le nom de la collection. Dans ce cas, utilisezdb["collection-name"].find()
Bossan
126

Étape 1: Consultez toutes vos bases de données:

show dbs

Étape 2: Sélectionnez la base de données

use your_database_name

Étape 3: Montrez les collections

show collections

Cela listera toutes les collections de votre base de données sélectionnée.

Étape 4: voir toutes les données

db.collection_name.find() 

ou

db.collection_name.find().pretty()
Debadatta
la source
3
J'ai remplacé le nom de la base de données par mon nom de la base de données, qui ne cessait de me donner des erreurs. Alors ne faites pas de choses stupides comme moi: D, tenez-vous-en àdb.<collection_name>.find();
Adam Shamsudeen
33
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
}

Je pense que ce script pourrait obtenir ce que vous voulez. Il imprime le nom de chaque collection puis imprime ses éléments dans json.

Bruno_Ferreira
la source
19

étape 1: entrez dans le shell MongoDB.

Mongo

étape 2: pour l'affichage de toutes les bases de données.

show dbs;

étape 3: pour une base de données sélectionnée:

utilisez 'nom_basededonnées'

étape 4: pour les statistiques de votre base de données.

db.stats ()

étape 5: lister toutes les collections (tableaux).

afficher les collections

étape 6: imprimez les données d'une collection particulière.

db.'nom_collection'.find (). pretty ()

Vaibhav gole
la source
9

Avant d'écrire ci-dessous les requêtes, entrez d'abord dans votre cmd ou PowerShell

TYPE:
mongo             //To get into MongoDB shell
use <Your_dbName>      //For Creating or making use of existing db

Pour lister tous les noms de collection, utilisez l'une des options ci-dessous: -

show collections  //output every collection
  OR
show tables
  OR
db.getCollectionNames() //shows all collections as a list

Pour afficher le contenu ou les données de toutes les collections, utilisez le code ci-dessous qui a été publié par 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
}
Amit Kumar
la source
Meilleure solution, montre le contenu de ma collection!
jjwallace le
4

Par ici:

db.collection_name.find().toArray().then(...function...)
Vladimir Sostaric
la source
4

Cela fera:

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

Je préfère une autre approche si vous utilisez mongoshell:

D'abord comme l'autre répond: use my_database_nameensuite:

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

Cette requête vous montrera quelque chose comme ceci:

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

Vous pouvez utiliser une approche similaire avec db.getCollectionInfos()elle est très utile si vous avez autant de données.

Juan de Dios
la source
Utilisez à la count()place de find():db.getCollectionNames().map( (name) => ({[name]: db[name].count()}) )
hallman76