2015-09-16 74 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