2013-05-01 4 views

Antwort

25

Setzen Sie diese in Ihre query.js Datei:

function get_results (result) { 
    print(tojson(result)); 
} 

db.col.find().forEach(get_results) 

und laufen:

mongo db_name query.js 

hier ein good explanation warum sollten Sie mach es so.

10

Die einfachste Art, wie ich laufen mongodb Abfragen aus einer Datei und zu sehen, die Ausgabe in der Konsole gefunden, ist dies:

query.js:

use my_db; 
db.my_collection.findOne() 

Auf der Kommandozeile: mongo <query.js

Dies zeigt die gesamte Ausgabe an die Konsole an, als würden Sie die Abfragen in der Mongo-Shell einzeln ausführen.

2

Gute Informationen hier - wollte darauf hinweisen, dass Mongo bietet eine printjson() -Funktion, so dass es keine Notwendigkeit, Ihre eigenen zu schreiben, es sei denn, Sie benötigen mehr Funktionalität als printjson() bietet.

Beispiel Mongo-Datei (test.js)

// Pretty print all documents in test.scratch 
use test 
db.scratch.find().forEach(printjson) 

Befehl

mongo < test.js 

Wenn Sie use test aus der Mongo-Datei weglassen wollen, vielleicht IDE Fehleranzeigen für js Dateien zu entfernen, können Sie geben Sie das Ziel db in der Befehlszeile:

mongo test < test.js 

Interessant zu beachten: th Die obigen Beispiele verwenden eine Umleitung, um die Datei in die Mongo-Shell zu schieben. Mit dieser Aufrufkonvention können Sie Befehle genau wie in der Shell eingeben. einschließlich Mongo-Shell-Komfort-Befehle wie use test.

Mongo bietet eine andere Skript-Aufrufkonvention: mongo test test.js, die den Redirect-Operator auslässt. Diese Aufrufkonvention erfordert test.js als richtiges Javascript und kann die Mongo Shell-Convenience-Methoden wie use test; man würde die Javascript-Äquivalente wie getSiblingDB() verwenden.

+0

Die akzeptierte Antwort gibt die Ergebnisse an die Konsole aus. – TheCrazyProgrammer

+0

Danke @TheCrazyProgrammer, kann nicht glauben, dass ich das verpasst habe. Aktualisieren Sie die Antwort, um sich auf die eingebaute 'printjson'-Funktion und Unterschiede in den Aufrufkonventionen zu konzentrieren. –

0

Eine andere Antwort, die nicht erwähnt wurde, ist, dass der Befehl use db in einem externen Skript nicht funktioniert. Der beste Weg ist getSiblingDB, zum Beispiel zu verwenden, wenn ich Datenbank my_db genannt verwenden möchten:

db = db.getSiblingDB("my_db"); 

function get_results (result) { 
    print(tojson(result)); 
} 

db.col.find().forEach(get_results) 

Dann funktioniert alles wie man es erwarten würde. Siehe Write Scripts for the mongo Shell.

+0

Nelu Malanceas Antwort scheint gut zu funktionieren. – TheCrazyProgrammer

+0

Die Umleitung einer Datei in die Mongo-Shell ermöglicht die Verwendung von Mongo-Shell-Befehlen. –

1

Dies scheint an einem gewissen Punkt in der Mongo cli geändert zu haben, hatte ich den folgenden Befehl ausführen, um es eine Datei für die Datenbank ausgeführt werden (mit Mongo cli Version 3.4.9)

mongo mongodb://192.168.1.1/YourDataBase scriptFile.js 

Ersetzen Sie dann 192.168.1.1 durch den IP-/Hostnamen Ihrer Datenbank, YourDataBase durch den Datenbanknamen und verweisen Sie auf eine vorhandene Datei.

Verwandte Themen