Meine Mongo-Shell macht nichts, wenn ich ein 'find ()' ausführe. Ich erhalte weder Fehler noch Ergebnisse, aber wenn ich Daten aus Python oder PHP ziehe, erhalte ich meine Ergebnisse. Ist das nicht seltsam?
Python29033
Antworten:
154
Wenn Sie Skripte mit Javascript erstellen, können Sie die Antwort von dcrosta verwenden. Wenn Sie jedoch direkt auf der interaktiven Mongo-Shell drucken möchten, müssen Sie hübsch () an Ihre find () - Abfragen anhängen.
Geben Sie auf der Shell Folgendes ein:
db.yourcollection.find().pretty()
Dies scheint den Vorteil zu haben, dass auch die normale Grenze für find () beibehalten wird. Vielen Dank!
Chris
Vielen Dank! Fast zu intuitiv. Ich googelte "Mongo Console Pretty Output". Wer wusste, dass es nur .pretty () ist
kmehta
Gibt es eine Möglichkeit, .pretty () als Standard festzulegen?
Jonathan Dumaine
Die Casbah API (Scala) scheint keine .pretty zu haben oder fehlt mir etwas?
Akauppi
20
Das von den find()Unterstützungen zurückgegebene Cursorobjekt forEach(), sodass Sie Folgendes verwenden können:
db.foo.find().forEach(printjson)
Beachten Sie jedoch, dass Sie im Gegensatz zu der Standardausgabe, in find()der die ersten 10 Objekte angezeigt forEach()werden, die gesamte Ergebnismenge iterieren können , ob Sie mit der Iteration fortfahren möchten oder nicht . Wenn Ihre Abfrage viele Ergebnisse liefert, kann dies eine Weile dauern und ist möglicherweise nicht besonders hilfreich. limit()ist dein Freund hier.
Es war möglicherweise zum Zeitpunkt der Beantwortung der Frage nicht verfügbar, aber um die Standardausgabe für alle find()Abfragen hübsch zu gestalten, verwende ich:
find().limit(1)
?Antworten:
Wenn Sie Skripte mit Javascript erstellen, können Sie die Antwort von dcrosta verwenden. Wenn Sie jedoch direkt auf der interaktiven Mongo-Shell drucken möchten, müssen Sie hübsch () an Ihre find () - Abfragen anhängen.
Geben Sie auf der Shell Folgendes ein:
db.yourcollection.find().pretty()
quelle
Das von den
find()
Unterstützungen zurückgegebene CursorobjektforEach()
, sodass Sie Folgendes verwenden können:Beachten Sie jedoch, dass Sie im Gegensatz zu der Standardausgabe, in
find()
der die ersten 10 Objekte angezeigtforEach()
werden, die gesamte Ergebnismenge iterieren können , ob Sie mit der Iteration fortfahren möchten oder nicht . Wenn Ihre Abfrage viele Ergebnisse liefert, kann dies eine Weile dauern und ist möglicherweise nicht besonders hilfreich.limit()
ist dein Freund hier.quelle
Die richtige Antwort wird bereits mit der Verwendung von bereitgestellt
.pretty()
.Nur als Randnotiz können Sie jedoch auch .toArray () am Cursor aufrufen, um die Dokumente als Javascript-Array von JSON abzurufen.
quelle
Es war möglicherweise zum Zeitpunkt der Beantwortung der Frage nicht verfügbar, aber um die Standardausgabe für alle
find()
Abfragen hübsch zu gestalten, verwende ich:DBQuery.prototype._prettyShell = true
Ich füge auch Folgendes hinzu:
DBQuery.prototype.ugly = function() { this._prettyShell = false; return this; }
Dadurch kann ich die Ergebnisse einer einzelnen
find()
Abfrage mithilfe von:Normalerweise füge ich meiner
~/.mongorc.js
Datei beide Prototypdeklarationen hinzu, damit sie in allen Mongo-Cli-Shells verfügbar sind.quelle
Mit dem praktischen Mongo-Shell-Enhancer Mongo-Hacker ( http://mongodb-tools.com/tool/mongo-hacker/ ) können Sie dies und ausgefallenere Dinge tun.
quelle