我想导出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
}
]
}
我想获得所有文件,其中capacity [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 capacity.1.size等
答案 0 :(得分:1)
您可以采取的一种方法是使用 aggregation framework 过滤您的文档,使用上述查询作为 $match
运算符,然后编写使用 $out
运算符将聚合管道返回到指定集合的文档。然后,您可以从该聚合输出集合中导出数据。以下概述了这一概念:
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