2015-09-16 126 views
1

我想出口3个不同的CSV文件,这里是我的文档蒙戈出口数组元素

{ 

"capacities" : [ 
    { 
     "size" : "A", 
     "incoming_parcels" : 27, 
     "outgoing_parcels" : 0, 
     "empty_compartments" : 0 
    }, 
    { 
     "size" : "B", 
     "incoming_parcels" : 11, 
     "outgoing_parcels" : 0, 
     "empty_compartments" : 8 
    }, 
    { 
     "size" : "C", 
     "incoming_parcels" : 2, 
     "outgoing_parcels" : 1, 
     "empty_compartments" : 7 
    } 
] 

}

我想获得的所有文件,其中能力[1] = B,然后得到所有字段 - 对于所有尺寸都一样。

这里是我的出口语法:

mongoexport.exe --db name --collection name --type csv --out sizeB.csv -q "{'capacities.1.size': 'B'}" -f size,incoming_parcels,outgoing_parcels,empty_compartments 

我也试过-f capacities.1.size等

回答

1

一个你可以采取的办法是使用aggregation framework来过滤使用上述查询的文档作为您的$match运算符,然后使用$out$out operato将汇总管道返回的文档写入指定的集合河然后您可以从该聚合输出集合中导出数据。下面简单介绍一下这个概念:

db.test.aggregate([ 
    { 
     "$match": { 
      "capacities.size": "B" 
     } 
    }, 
    { 
     "$unwind": "$capacities" 
    }, 
    { 
     "$match": { 
      "capacities.size": "B" 
     } 
    }, 
    { 
     "$project": {    
      "size" : "$capacities.size", 
      "incoming_parcels" : "$capacities.incoming_parcels", 
      "outgoing_parcels" : "$capacities.outgoing_parcels", 
      "empty_compartments" : "$capacities.empty_compartments", 
     } 
    }, 
    { 
     "$out": "capacities_output" 
    } 
]) 

导出为CSV:

mongoexport.exe --db name --collection "capacities_output" --csv > sizeB.csv --fields size,incoming_parcels,outgoing_parcels,empty_compartments 
+0

谢谢你,要去尝试后来 我怎么能兑现吗? – Przemek85

+0

@ Przemek85不用担心,你可以检查一下[**我应该怎么做当有人回答我的问题?**](http://stackoverflow.com/help/someone-answers) – chridam

+0

明白了,ty先生:) – Przemek85