2012-12-20 70 views
3

我試圖從MongoDB中導出CSV文件列表和輸出文件保存到我的目錄,這是/ home/asaj /。輸出文件應該包含以下列:name,file_name,d_start和d_end。 該查詢應篩選狀態等於「FU」或「FD」,且d_end> 2012年12月10日的數據。mongoexport JSON斷言:10340故障解析JSON字符串

在mongoDB中,查詢工作正常。以下查詢限於1個數據輸出。請參見下面的查詢:

> db.Samples.find({ $or : [ { status : 'FU' }, { status : 'FD'} ], d_end : { $gte : ISODate("2012-12-10T00:00:00.000Z") } }, {_id: 0, name: 1, file_name: 1, d_start: 1, d_end: 1}).limit(1).toArray(); 
[ 
    { 
      "name" : "sample" 
      "file_name" : "sample.jpg", 
      "d_end" : ISODate("2012-12-10T05:1:57.879Z"), 
      "d_start" : ISODate("2012-12-10T02:31:34.560Z"), 
    } 

] 
> 

在CLI,mongoexport命令如下:

mongoexport -d maindb -c Samples -f "name, file_name, d_start, d_end" -q "{'\$or' : [ { 'status' : 'FU' }, { 'status' : 'FD'} ] , 'd_end' : { '\$gte' : ISODate("2012-12-10T00:00:00.000Z") } }" --csv -o "/home/asaj/currentlist.csv" 

但我總是結束了這個錯誤:

connected to: 127.0.0.1 
Wed Dec 19 16:58:17 Assertion: 10340:Failure parsing JSON string near: , 'd_end 
0x5858b2 0x528cb4 0x52902e 0xa9a631 0xa93e4d 0xa97de2 0x31b441ecdd 0x4fd289 
mongoexport(_ZN5mongo11msgassertedEiPKc+0x112) [0x5858b2] 
mongoexport(_ZN5mongo8fromjsonEPKcPi+0x444) [0x528cb4] 
mongoexport(_ZN5mongo8fromjsonERKSs+0xe) [0x52902e] 
mongoexport(_ZN6Export3runEv+0x7b1) [0xa9a631] 
mongoexport(_ZN5mongo4Tool4mainEiPPc+0x169d) [0xa93e4d] 
mongoexport(main+0x32) [0xa97de2] 
/lib64/libc.so.6(__libc_start_main+0xfd) [0x31b441ecdd] 
mongoexport(__gxx_personality_v0+0x3c9) [0x4fd289] 
assertion: 10340 Failure parsing JSON string near: , 'd_end 

我有在「錯誤,'d_end'「在mongoexport CLI中。我不確定它是否是JSON語法錯誤,因爲查詢適用於MongoDB。 請幫忙。

+0

嘗試翻轉引號。將單引號放在整個查詢之外,並在需要引用字符串的地方使用雙引號。 –

回答

2

詢問後,有人知道MongoDB的比我好,我們發現,這個問題是

ISODate("2012-12-10T00:00:00.000Z") 

我們發現這個問題的答案:mongoexport JSON parsing error

要解決此錯誤,第一,我們把它的strtotime

php > echo strtotime("12/10/2012"); 
1355126400 

接着,多個的strtotimeř由1000產生。這一日期將是這樣的:

1355126400000 

最後,變更ISODate( 「2012-12-10T00:00:00.000Z」)新的日期(1355126400000)在mongoexport命令。現在

,CLI的mongoexport看起來是這樣的,它的工作原理:

mongoexport -d maindb -c Samples -f "id,file_name,d_start,d_end" -q "{'\$or' : [ { 'status' : 'FU' }, { 'status' : 'FD'} ] , 'd_end' : { '\$gte' : new Date(1355126400000) } }" --csv -o "/home/asaj/listupdate.csv" 

注:在-f或--fields選項的每個字段名之間移除空間。

2

我知道它與這個問題沒有多大關係,但是這篇文章的標題將它引入Google,因爲我得到了完全相同的錯誤,我將添加一個答案。希望它可以幫助某人。

我的問題是在Windows上爲_id添加一個MongoId查詢到mongoexport控制檯命令。這裏的錯誤:

Assertion: 10340:Failure parsing JSON string near: _id 

的問題結束了,我需要包裹在雙引號的JSON查詢,的的ObjectId必須是在雙引號(不是單!),所以我不得不逃離那些報價。下面是最終的查詢工作,供將來參考:

mongoexport -u USERNAME -pPASSWORD -d DATABASE -c COLLECTION 
    --query "{_id : ObjectId(\"5148894d98981be01e000011\")}" 
+0

這是正確的答案,但我並不需要在整個查詢周圍使用雙引號。這對我有效:-q'{_id:ObjectId(「5148894d98981be01e000011」)}' 因此,ObjectIds中的單引號似乎是關鍵。 – DrewVS