2016-10-07 2 views
0

Ich möchte nach einer Abfrage eine Sammlung Projektion exportieren, die Syntax I mongoexport auszuführen bin mit ist:Abfrage für Mongoexport

./mongoexport -d myDB -c myCollection -q "myQuery" -o output.json 

Ich habe versucht, diesen Filter in Mongo Shell zu verwenden, aber ich kann‘ t Format es richtig, so dass es legal ist für „myQuery“ steht:

{ 
    'run.session.game._id':'gameId1', 
    'run.session.device._id':{$in:['value1','value2']}, 
    'createdAt':{ 
     $gte:ISODate('2016-06-05T15:14:22.163Z'), 
     $lte:ISODate('2017-06-05T15:14:22.163Z') 
    } 
} 

es funktioniert, wenn ich nur den ersten Filter, aber sobald ich in Zeile 2 für Geräte-ID setzen, bekomme ich einen Fehler . Die Fehlermeldung sieht wie folgt aus:

2016-10-07T22:54:02.333+0200  
error validating settings: query '[123 39 114 117 110 46 115 101 115 
115 105 111 110 46 103 97 109 101 46 95 105 100 39 32 58 32 39 90 71 
120 88 109 104 100 66 69 83 39 44 39 114 117 110 46 115 101 115 115 105 
111 110 46 100 101 118 105 99 101 46 95 105 100 39 58 123 58 91 79 98 
106 101 99 116 73 100 40 39 101 104 55 73 77 117 112 107 52 112 39 41 
93 125 125]' is not valid JSON: invalid character ':' looking for 
beginning of object key string 
2016-10-07T22:54:02.333+0200 try 'mongoexport --help' for more 
information 

Bitte helfen :( Ich weiß, dass es etwas über die Abfrage hat in strikter JSON-Format sein, aber ich weiß nicht wirklich, wie es zu konvertieren ...

Antwort

0

Von mongoexport documentation:

Sie müssen die Abfrage in einfache Anführungszeichen setzen (z. ') um sicherzustellen, dass es nicht mit Ihrer Shell-Umgebung interagiert.

Also versuchen Sie Ihr " ‚s und '‘ s auf diese Weise vermittlungs

./mongoexport -d myDB -c myCollection -q '{ 
    "run.session.game._id":"gameId1", 
    "run.session.device._id":{$in:["value1","value2"]}, 
    "createdAt":{ 
     $gte:ISODate("2016-06-05T15:14:22.163Z"), 
     $lte:ISODate("2017-06-05T15:14:22.163Z") 
    } 
}' -o output.json 
+0

Vielen Dank: D es hat funktioniert –

0

Es scheint, Sie vermissen ein : nach dem $in Operator Versuchen zu verwenden:.

'run.session.device._id':{$in:['value1','value2']} 
+0

Dank für Ihre Antwort danken, habe ich versucht, mit ‚:‘ jetzt aber es ist mir immer noch die gleichen Fehler zu geben: ( –