relacionar - ¿Cómo imprimir más de 20 artículos(documentos) en el shell de MongoDB?
mongodb tutorial (6)
DBQuery.shellBatchSize = 300
haré
MongoDB Docs - Introducción al shell mongo - Ejecución de consultas
db.foo.find().limit(300)
no lo hare Todavía imprime sólo 20 documentos.
db.foo.find().toArray()
db.foo.find().forEach(printjson)
ambos imprimirán una vista muy ampliada de cada documento en lugar de la versión de 1 línea para find()
:
Desde la shell, si desea mostrar todos los resultados, puede hacer db.collection.find().toArray()
para obtener todos los resultados sin ella.
En el shell mongo, si el cursor devuelto no se asigna a una variable con la palabra clave var, el cursor se itera automáticamente para acceder hasta los primeros 20 documentos que coinciden con la consulta. Puede configurar la variable DBQuery.shellBatchSize para cambiar el número de documentos iterados automáticamente.
Referencia: https://docs.mongodb.com/v3.2/reference/method/db.collection.find/
Le sugiero que tenga un archivo ~/.mongorc.js
para que no tenga que establecer el tamaño predeterminado cada vez.
# 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
Para saber más sobre lo que puede hacer, le sugiero que consulte este artículo: http://mo.github.io/2017/01/22/mongo-db-tips-and-tricks.html
Puede usarlo dentro del shell para iterar en los próximos 20 resultados. Simplemente escríbalo si ve "tiene más" y verá los siguientes 20 elementos.
Siempre podría hacer:
db.foo.find().forEach(function(f){print(tojson(f, '''', true));});
Para obtener esa vista compacta.
Además, me parece muy útil limitar los campos devueltos por la búsqueda para:
db.foo.find({},{name:1}).forEach(function(f){print(tojson(f, '''', true));});
que devolvería solo el campo _id y nombre de foo.