3

mongoDB から CSV ファイル リストをエクスポートし、出力ファイルを自分のディレクトリ (/home/asaj/) に保存しようとしています。出力ファイルには、name、file_name、d_start、および d_end の列が含まれている必要があります。クエリは、ステータスが "FU" または "FD" で、d_end > 2012 年 12 月 10 日のデータをフィルタリングする必要があります。

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

mongoexport CLIの " , 'd_end' " でエラーが発生しました。クエリはMongoDBで機能するため、JSON構文エラーかどうかはわかりません。助けてください。

4

2 に答える 2

2

MongoDB を私よりよく知っている人に尋ねたところ、問題は

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

この質問に対する答えが見つかりました: mongoexport JSON parsing error

このエラーを解決するには、まず、それをstrtotimeに変換します。

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

次に、複数の strtotime は 1000 で結果を返します。この日付は次のようになります。

1355126400000

最後に、 mongoexport コマンドでISODate("2012-12-10T00:00:00.000Z")new Date(1355126400000)に変更します。

これで、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 オプションの各フィールド名の間のスペースを削除してください。

于 2012-12-20T03:15:15.657 に答える
2

この質問とはほとんど関係がないことはわかっていますが、この投稿のタイトルがGoogleでそれを引き起こしたので、まったく同じエラーが発生していたので、回答を追加します. うまくいけば、それは誰かを助けます。

私の問題は、_id の MongoId クエリを Windows の mongoexport コンソール コマンドに追加することでした。エラーは次のとおりです。

Assertion: 10340:Failure parsing JSON string near: _id

問題は、JSON クエリを二重引用符で囲む必要があり、ObjectId を (一重引用符ではなく) 二重引用符で囲む必要があったため、それらの引用符をエスケープする必要があったことです。将来の参考のために、機能した最終的なクエリを次に示します。

 mongoexport -u USERNAME -pPASSWORD -d DATABASE -c COLLECTION 
   --query "{_id : ObjectId(\"5148894d98981be01e000011\")}"
于 2013-03-29T16:10:40.603 に答える