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

253
db.foo.find().limit(300)

ne le fera pas. Il n'imprime toujours que 20 documents.

db.foo.find().toArray()
db.foo.find().forEach(printjson)

imprimera à la fois une vue très étendue de chaque document au lieu de la version 1 ligne pour find():

non-polarité
la source
Par défaut, le shell mongo n'imprime que les 20 premiers documents, vous pouvez obtenir les 20 lots suivants en tapant Type itle shell. Etc.
roottraveller

Réponses:

381

DBQuery.shellBatchSize = 300

ça ira.

MongoDB Docs - Configurer le shell mongo - Modifier la taille du lot du shell mongo

Thilo
la source
1
Existe-t-il un moyen de rendre cela persistant?
Lukasz Wiktor
7
@LukaszWiktor oui, vous pouvez créer un fichier $ HOME / .mongorc.js et y mettre ce paramètre shellBatchSize. le mien a le paramètre de taille de lot de requête et rs.slaveOk () activé. son utilisation est également légèrement différente lors de l'utilisation de --eval via la ligne de commande. voir: docs.mongodb.com/manual/mongo/#mongorc-js-file
matias elgart
1
C'est génial! Merci @matiaselgart
Lukasz Wiktor
le lien est obsolète, il ne contient pas de telles informations. De plus, puis-je transmettre cela en tant que variable d'environnement?
phil294
157

Depuis le shell, si vous souhaitez afficher tous les résultats, vous pouvez db.collection.find().toArray()obtenir tous les résultats sans.

Sridhar
la source
Ce. Si vous voulez tout simplement tous dans une coquille afin que vous puissiez couper et coller, cela suffit.
superluminaire
Celui-ci est plus utile
anwerj
C'est exactement ce qui m'a fait. À vrai dire, j'avais juste besoin d'un moyen de sauvegarder tous les résultats de la sortie Robomongo. Je vous remercie!
Andrés Botero
C'est génial, et cela m'a également permis de transmettre le résultat à jq :)
Omer van Kloeten
Solution parfaite! Mec, c'est très utile.
coderpc
93

Vous pouvez utiliser l' itintérieur du shell pour parcourir les 20 prochains résultats. Tapez simplement itsi vous voyez «a plus» et vous verrez les 20 prochains articles.

halfdan
la source
35
oh, il s'agit vraiment d'imprimer tout sans utiliserit
non
15
Merci halfdan, vous êtes deux fois votre nom d'utilisateur dit que vous êtes!
cassi.lup
6
L'idée n'est PAS d'utiliser l'itérateur
Amir Kost
2
J'ai rétrogradé parce que c'est ce que l'OP voulait éviter (ce qui est le comportement par défaut).
crafter
41

Pourrait toujours faire:

db.foo.find().forEach(function(f){print(tojson(f, '', true));});

Pour obtenir cette vue compacte.

De plus, je trouve très utile de limiter les champs retournés par la recherche:

db.foo.find({},{name:1}).forEach(function(f){print(tojson(f, '', true));});

qui retournerait seulement le champ _id et name de foo.

Wilfred Knievel
la source
1
J'aime cette façon parce qu'elle peut être exécutée en script shell (client mongo avec --eval)
Zheng Kai
1
@ZhengKai si vous utilisez un script et pas dans le shell, alors shellBatchSize n'est pas pertinent car vos résultats ne seront pas itérés pour vous par le shell, vous devrez le faire vous-même.
Asya Kamsky
Le tojson () était exactement ce que je cherchais pour le convertir depuis DBQuery merci!
Mark Pieszak - Trilon.io
4

Je vous suggère d'avoir un ~/.mongorc.js fichier afin que vous n'ayez pas à 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

Sahith Vibudhi
la source
0

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 à itération automatique.

Référence - https://docs.mongodb.com/v3.2/reference/method/db.collection.find/

Harsh Raj
la source