web-dev-qa-db-fra.com

En Mongo, comment puis-je afficher les résultats lorsque je fais un .find () identique à un .findOne ()

findOne() donne un objet json joliment imprimé.

find() résulte en un objet json jarbled.

Comment puis-je rendre find() identique à findOne(), quand il s'agit d'afficher dans la coquille Mongo?

67
TIMEX

Si vous utilisez des scripts utilisant JavaScript, vous pouvez utiliser la réponse de dcrosta . Mais si vous souhaitez imprimer directement sur le shell interactif Mongo, vous devez ajouter pretty () à vos requêtes find (). 

Tapez sur le shell: db.yourcollection.find().pretty()

144
Rohan

L'objet curseur renvoyé par find() supporte forEach(), vous pouvez donc utiliser:

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

Cependant, notez que, contrairement à la sortie par défaut de find() qui affiche les 10 premiers objets, puis vous permet de choisir de poursuivre ou non l'itération, forEach() itère l'ensemble des résultats. Ainsi, si votre requête renvoie plusieurs résultats, cela peut prendre un certain temps et ne pas être très utile. limit() est votre ami ici.

19
dcrosta

La réponse correcte est déjà fournie avec l'utilisation de .pretty().

Cependant, vous pouvez également appeler .toArray () sur le curseur pour obtenir les documents sous forme de tableau javascript de JSON.

db.foo.find().toArray()
3
Rahul Kumar

L'améliorateur pratique de mongo-shell mongo-hacker ( http://mongodb-tools.com/tool/mongo-hacker/ ) vous permettra de faire cela et de faire des choses plus sophistiquées.

1
Florian

Elle n'était peut-être pas disponible au moment où la question a été posée, mais pour que la sortie par défaut de toutes les requêtes find() soit jolie, j'utilise:

DBQuery.prototype._prettyShell = true

J'ajoute également ce qui suit:

DBQuery.prototype.ugly = function() {
    this._prettyShell = false;
    return this;
}

ce qui me permet d'oublier les résultats d'une seule requête find() en utilisant:

db.mycollection.find().ugly()

J'ajoute généralement les deux déclarations de prototype dans mon fichier ~/.mongorc.js afin qu'elles soient disponibles dans tous les shells mongo cli.

0
David Weinraub