db.foo.find().limit(300)
ne le fera pas. Il n’imprime encore que 20 documents.
db.foo.find().toArray()
db.foo.find().forEach(printjson)
affichera une vue très développée de chaque document au lieu de la version à une ligne pour find()
:
DBQuery.shellBatchSize = 300
ça ira.
MongoDB Docs - Démarrer avec le shell mongo - Exécuter des requêtes
Si vous souhaitez afficher tous les résultats, vous pouvez utiliser la fonction db.collection.find().toArray()
pour obtenir tous les résultats sans ce dernier.
Vous pouvez utiliser it
à l'intérieur du shell pour effectuer une itération sur les 20 prochains résultats. Il suffit de taper it
si vous voyez "a plus" et vous verrez les 20 éléments suivants.
Pourrait toujours faire:
db.foo.find().forEach(function(f){print(tojson(f, '', true));});
Pour obtenir cette vue compacte.
Aussi, je trouve très utile de limiter les champs retournés par la recherche donc:
db.foo.find({},{name:1}).forEach(function(f){print(tojson(f, '', true));});
qui ne renverrait que les champs _id et name de foo.
Je vous suggère d’avoir un fichier ~/.mongorc.js
afin de ne pas avoir à définir la taille par défaut à chaque fois.
# execute in your terminal
touch ~/.mongorc.js
echo 'DBQuery.shellBatchSize = 100;' > ~/.mongorc.js
# add one more line to always prettyprint the ouput
echo 'DBQuery.prototype._prettyShell = true; ' >> ~/.mongorc.js
Pour en savoir plus sur ce que vous pouvez faire d'autre, je vous suggère de consulter cet article: http://mo.github.io/2017/01/22/mongo-db-tips-and-tricks.html
Dans le shell mongo, si le curseur renvoyé n'est pas affecté à une variable à l'aide du mot clé var, le curseur est automatiquement itéré pour accéder aux 20 premiers documents correspondant à la requête. Vous pouvez définir la variable DBQuery.shellBatchSize pour modifier le nombre de documents automatiquement itérés.
Référence - https://docs.mongodb.com/v3.2/reference/method/db.collection.find/