2016-09-16 8 views
0

Versuchen, mongoexport und Probleme mit meinem Abfrageparameter ausführen.Mongoexport Datumsbereich Abfrage Ergebnis in Fehleranalyse

mongoexport -d test-copy -c collection -o /home/ubuntu/mongodb-archiving/mongodump/collection.json --query '{"created_at": {\$lte: new Date(1451577599000) } }' 

Collection ist:

{"created_at" : ISODate("2014-03-07T06:32:19.172Z")}

, auf die ich in Mongo-Client nur gut abfragen.

Das Ergebnis in dem folgenden Fehler:

Assertion: 10340:Failure parsing JSON string near: "created_a

+0

Ich denke nicht, u Datum in 'mongoexport' Befehl angeben. Ich habe gelöst: Öffnen Sie den Shell-Befehl, Abfrage mit Datumsparameter und speichern Sie es in Sammlung2. Dann Export collection2 – Valijon

Antwort

2

Sie haben ein \ in Ihrer Anfrage. Bitte entfernen Sie es.

--query '{"created_at": {$lte: new Date(1451577599000)}}' 
+0

Verwendet es Unix-Timestamp? – lozadaOmr

+0

@lozadaOmr: Das ist ein Datum im Epochenformat. – 4J41

0

Die mongoexport und mongodump Tools benötigen ein gültiges JSON-Objekt für die --query Parameter. Von https://docs.mongodb.com/manual/reference/program/mongodump/#cmdoption--query:

--query , -q

Provides a JSON document as a query that optionally limits the documents included in the output of mongodump.

You must enclose the query in single quotes (e.g. ') to ensure that it does not interact with your shell environment.

Der Befehl ist fehlgeschlagen aufgrund der Abfrageparameter Sie in mongoexport übergeben, die kein gültiges JSON-Objekt aufgrund der Existenz von new Date(), die eine Javascript-Anweisung ist.

Die erforderliche Modifikation ist es, einfach das Objekt Beispiel ISODate() verwenden Sie zur Verfügung gestellt, .e.g:

mongoexport -d test-copy -c collection -o /home/ubuntu/mongodb-archiving/mongodump/collection.json --query '{"created_at": {$lte: ISODate("2014-03-07T06:32:19.172Z") } }' 

Sie müssen nur den Inhalt des ISODate() mit dem Datum benötigen Sie ersetzen.

+0

Verwendete diese '--query '{" created_at ": {$ lte: ISODate (" 2015-11-31T23: 59: 59.599Z "}}' und bekam' Sun Sep 18 16:27:43 Behauptung: 10340: Fehler beim Analysieren der JSON-Zeichenfolge in der Nähe von: "created_a" – lozadaOmr

+0

Was ist Ihre MongoDB-Version? Könnten Sie versuchen, "mongoexport --version" auszuführen? Ich habe diesen Befehl in MongoDB 3.2.9 verwendet und funktioniert wie erwartet: 'mongoexport -d test -c test --query '{created_at: {$ lte: ISODate ("2016-09-19T00: 00: 00Z")}}' –

+0

Verwenden von Version 2.0.4 – lozadaOmr

0

Sie sollten $ date mit mongoexport verwenden:

mongoexport.exe -h *HOST* -p *PORT* -q "{ 'created_at' : { '$lt' : { '$date' : '2014-03-07T06:32:19.172Z' } } }" 
+0

Es wurde kein Fehler ausgegeben, aber es wurden auch keine Datensätze exportiert. – lozadaOmr

0

die \$lte entfernen und es zu "$lt" in der Abfrage angegeben ändern, und die mongodump wird gut funktionieren. Getestet auf mongodb 3.0.8

> use appdb 
> db.testcoll.find({}) 
{ "_id" : 1, "created_at" : ISODate("2016-09-15T08:46:12.272Z") } 
{ "_id" : 2, "created_at" : ISODate("2016-09-15T08:46:12.272Z") } 
{ "_id" : 3, "created_at" : ISODate("2016-09-16T08:46:30.736Z") } 
{ "_id" : 4, "created_at" : ISODate("2016-09-16T08:47:12.368Z") } 
{ "_id" : 5, "created_at" : ISODate("2016-09-16T08:47:15.562Z") } 

> db.testcoll.find({"created_at":{"$lt":new Date("2016-09-16")}}) 

{ "_id" : 1, "created_at" : ISODate("2016-09-15T08:46:12.272Z") } 
{ "_id" : 2, "created_at" : ISODate("2016-09-15T08:46:12.272Z") } 

> db.testcoll.find({"created_at":{"$lt":new Date(1473984000)}}) 

    // make sure you are using millisecond version of epoch 
> db.testcoll.find({"created_at":{"$lt":new Date(1473984000000)}}) 

{ "_id" : 1, "created_at" : ISODate("2016-09-15T08:46:12.272Z") } 
{ "_id" : 2, "created_at" : ISODate("2016-09-15T08:46:12.272Z") } 

nun den mongodump Teil:

[email protected]:~$ mongodump -d appdb -c testcoll --query '{"created_at":{"$lt":new Date(1473984000000)}}' 
2016-09-16T14:21:27.695+0530 writing appdb.testcoll to dump/appdb/testcoll.bson 
2016-09-16T14:21:27.696+0530 writing appdb.testcoll metadata to dump/appdb/testcoll.metadata.json 
2016-09-16T14:21:27.708+0530 done dumping appdb.testcoll (2 documents)