web-dev-qa-db-fra.com

Comment imprimer plus de 20 éléments (documents) dans le shell MongoDB?

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():

227
331
Thilo

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.

126
Sridhar

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.

96
halfdan

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.

35
Wilfred Knievel

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

1
new_user

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/

0
Harsh Raj