findOne()
führt zu einem hübsch gedruckten JSON-Objekt.
find()
führt zu einem verwirrten JSON-Objekt.
Wie kann ich find()
das Gleiche machen findOne()
, wenn es um die Anzeige in der Mongo-Shell geht?
findOne()
führt zu einem hübsch gedruckten JSON-Objekt.
find()
führt zu einem verwirrten JSON-Objekt.
Wie kann ich find()
das Gleiche machen findOne()
, wenn es um die Anzeige in der Mongo-Shell geht?
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()
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.
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.
db.foo.find().toArray()
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:
db.mycollection.find().ugly()
Normalerweise füge ich meiner ~/.mongorc.js
Datei beide Prototypdeklarationen hinzu, damit sie in allen Mongo-Cli-Shells verfügbar sind.
Mit dem praktischen Mongo-Shell-Enhancer Mongo-Hacker ( http://mongodb-tools.com/tool/mongo-hacker/ ) können Sie dies und ausgefallenere Dinge tun.
find().limit(1)
?