2016-03-30 7 views
1

ich diese Abfrage haben, aber ich bin ein Syntaxfehler bekommen: unerwartete KennungVerwenden mongoexport mit einem --query für isodate

mongoexport --db ium --collection events \ 
    --query 'db.events.find({'created_at' : { 
     $gte: ISODate("2016-03-01T00:00:00.001Z"), 
     $lte: ISODate("2016-03-29T23:59:59:59.000Z") 
    }, 
    "name" : "UPDATE_SUCCESS"})' \ 
--out guille1_test.json 

was kann es falsch sein?

+1

versuchen Sie mit "created_at" – jmugz3

+0

@ jmugz3 Es gab ein bisschen mehr falsch als der Missbrauch von "quoting" innerhalb der Argument-String, da es klare Verwendungsfehler zu korrigieren sowie etwas nicht allgemeinverständliches über Abfragen mit "Daten" . –

Antwort

3

Sie müssen "extended json" in Abfragen mit mongoexport verwenden. Also die Art, "Daten" zu spezifizieren, ist mit $date stattdessen. Und die --query ist nur die "Abfragezeichenfolge" im JSON-Format. Nicht der ganze Befehl in die Shell eingegeben:

mongoexport --db ium --collection events \ 
    --query '{ 
    "created_at": { 
     "$gte": { "$date": "2016-03-01T00:00:00.001Z" }, 
     "$lte": { "$date": "2016-03-29T23:59:59.000Z" } 
    }, 
    "name": "UPDATE_SUCCESS" 
    }' \ 
    --out guile1_test.json 

Beachten Sie auch das korrigierte Datum Zeichenfolge im $lte Argumente und natürlich die „unter dem Stichwort“ Verwendung von '' um den Körper des JSON Arguments und "" um die innere Ausdrücke und Werte. Es ist wichtig, dass diese Arten von Anführungszeichen unterschiedlich sind, sowie "Shell-Argumente" sollten ihre "äußeren" Anführungszeichen wie '' haben, sonst versucht die "Shell", den enthaltenen Ausdruck auszuwerten.

+0

Danke Mann, in nur einem Anfänger hier mit Mongodb, wie Sie sehen können hehe. Jedenfalls bringt dieses Format auch unerwartete Fehler mit sich. Perphaps ändern das Datumsformat in UNIX-Epoche? mongoexport --dbium --sammlungsereignisse --query '{"created_at": {$ gte: {"$ datum": 2016-03-01T00: 00: 00.001Z "}}," name ": "UPDATE_SUCCESS"} '--out guille_test.json –

+0

@ Guillermo-Casco Der Fehler liegt darin, dass Sie immer noch keine Anführungszeichen um den Wert zu '" $ date "' finden. Hier' 2016-03-01T00: 00: 00.001Z "' Sehen Sie sich das fehlende '' 'vor dem Datum an. Alles, was Sie tun müssen, ist Kopieren/Einfügen, was in der Antwort enthalten ist, da dies die direkte Übersetzung dessen ist, was Sie in Ihrer Frage versucht haben, aber ohne Formatfehler im gebildeten JSON. –