2015-05-12 9 views
5

Ich bin ein neuer Anfänger von mongodb. Ich möchte in den letzten Stunden einige Daten aus meinen Datenbanken exportieren. Also, ich denke, ich muss mongoexport Befehl schreiben und Datumsbereich in --query Optionen, um es zu tun.mongoexport vor kurzem Stunden Daten von mongodb

ich ein Bash-Datei wie folgt schreiben und versuchen, sie auszuführen:

#!/bin/bash 

mongoexport --host localhost:27017 --db copy --collection txt --csv --fields x1,x2,x3...,date --query '{ "date" : {$gt:new Date(new Date() - 1000*60*60*3)} }' --out home/data.csv 

Aber ich die Ergebnisse erhalten, sagt:

connected to: localhost:27017 
assertion: 16619 code FailedToParse: FailedToParse: Expecting '}' or ',': offset:25 of:{ "date" : {$gt:new Date(new Date() - 1000*60*60*3)} } 

Es sieht zu localhost verbinden, aber nicht ausgeben kann, die Daten . Wenn ich die Option --query entferne, kann dies erfolgreich ausgeführt werden und die gesamten Daten erhalten, aber ich muss die Abfrage benötigen, um die Daten in den letzten 3 Stunden zu unterteilen.

Alle Ideen und Hilfe werden sehr geschätzt. Danke und Beste.

+0

überprüfen Sie diese http://stackoverflow.com/questions/14758605/mongoexport-using-gt-and-lt-constraints-on-a-date-range –

Antwort

1

mit mongoexport müssen Sie dem Date-Objekt einen Zeitstempel geben.

Eine Erklärung wird hier beantwortet: MongoDb timestamp

Was Sie schreiben können als Skript so etwas wie diese (ich bin ziemlich rostig mit bash, kann sicher in einer einzigen Zeile zu bleiben verbessert werden):

timestamp=$(date +%s) 
let total=$timestamp*1000-3600*1000*3 
mongoexport --host localhost:27017 --db copy --collection txt --csv --fields x1,x2,x3...,date --query '{ "date" : {$gt:new Date('$total')} }' --out home/data.csv 
+0

Hallo Luca, Vielen Dank für Ihre Hilfe. Ich schreibe das Bash-Skript wie du sagst und es gibt momentan keinen Fehler. Aber ich bekomme immer noch nicht die letzten 3 Stunden Daten. Es sieht so aus: Verbunden mit: localhost: 27017 exportiert 0 Datensätze. Aber ich bin mir sicher, dass die Kopie-Datenbank auf der lokalen Seite neu ist, die ich vor ein paar Minuten vom Server kopiert habe, sie könnte kürzlich Daten enthalten. Also, warum bekomme ich immer noch 0 record? – Sophia

+0

Liebe Sophia, um zu überprüfen, ob Sie eine Verbindung zu der Sammlung herstellen und eine Abfrage ausführen können db.txt.find ({}, {_id: 0, ts: 1}) sort ({ts: -1}) db.txt .find ({}, {_id: 0, ts: 1}). sort ({ts: 1}) und überprüfen Sie die Daten, die Sie erhalten. Alternativ könnte ein anderer Export mit einer Abfrage von new Date (0) sein: 'mongoexport --host localhost: 27017 --db kopieren --collection txt --csv --fields x1, x2, x3 .. ., date --query '{"date": {$ gt: neues Datum (0)}}' --out home/data.csv ' Haben Sie etwas? –

+0

Hallo Luca, danke nochmal. Ich betrete Mongo, zeige dbs und zeige Sammlungen in der Copy-Datenbank an und benutze den Code wie du schreibst, aber es wird ein Fehler angezeigt. Sammlungen anzeigen img system.index txt > db.txt.find ({}, {_id: 0, ts: 1}) .sort ({ts: -1}); Fehler: { \t "$ err": "Runner Fehler: Überlauf Sortierstufe gepufferte Datennutzung von 33.555.446 Bytes interner Grenze von 33.554.432 Bytes überschreiten", \t "Code": 17144 – Sophia

Verwandte Themen