Mongoimport严格JSON {$ date:XXX}为ISODate

时间:2012-12-13 17:03:06

标签: regex mongodb sed

我有几个GB从RDBMS导出为JSON。所有日期都采用严格的JSON格式,即{$date:1354810746067}

Mongoimport似乎没有将其转换为所需的ISODate。它仅在格式为Date(1354810746067)时才有效。

是否可以选择调整mongoimport以接受{$ date:..}作为ISODate?

或者我应该通过一些sed脚本传递我的导入,也许?

示例输入就像

{cleared:true,category:"general auditing",transactionId:null,details:{new_terminal_mode:"test value-24",company_old_id:2534,new_terminal_state:"test value-28",reduction_type:"test value-3",transition_times:[{$date:1355408317000},{$date:1355407983000},{$date:1355413490000},{$date:1355411339000},{$date:1355414485000},{$date:1355414378000},{$date:1355408061000},{$date:1355408064000}]},_id:"69",dateTime:{$date:1354813457327},severity:20,eventType:"log_event_count_threshold_reached",systemId:693972591865925,carParkId:0}

我试过

cat file | sed -e s/{$date:\([0-9]*\)}/Date\(\1\)/g | mongoimport -c test

但我的正则表达技巧在那里失败了: - (。

2 个答案:

答案 0 :(得分:1)

我现在没有mongoimport所以我在这里无法帮助你。

但对于sed,请尝试使用sed中的一些引号:

sed -e 's/{$date:\([0-9]*\)}/Date\(\1\)/g' file

PS:你的正则表达式很好。

答案 1 :(得分:0)

尝试使用引号,另一个不是有效的JSON:{“$ date”:1354810746067}