arrays - 如何将书籍集合导出到 MongoDB 中的 csv?
问题描述
我有一个从聚合中获取的名为“结果”的集合,它包含如下数据:
{
"_id": {
"$numberLong": "123"
},
"books": [{
"DisplayName": "ABC",
"transaction": "20"
}
{
"DisplayName": "ABC",
"transaction": "25"
}
.....]
"_id": {
"$numberLong": "124"
},
"books": [{
"DisplayName": "BCE",
"transaction": "100"
}
....]
}
有什么可能的方法可以将其转换为这种形式的 csv 吗?
_id | DisplayName | Transaction
123 ABC 20
123 ABC 25
124 BCE 100
我尝试了以下代码:
mongoexport --db dbname --collection results --out D:/mongolearn/results.csv
但是我得到的输出 csv 文件是这样的:
"_id": { "$numberLong": "123} | {"books": [{"DisplayName": "ABC","transaction": "20"}{ "DisplayName": "ABC" | "transaction": "25"|
我是 MongoDB 的初学者,任何帮助将不胜感激。
解决方案
Mongo 有一个名为mongoexport的内置终端方法,问题是您不能将聚合与它一起使用,因为它旨在通过查询过滤器而不是完整的聚合和数据处理来导出更基本的数据。
您可以像这样解决这个问题:
- 使用您的管道创建一个新的临时集合,并
$out
db.results.aggregate([
{
$unwind: "$books"
},
{
$project: {
_id: 1,
DisplayName: "$books.DisplayName",
Transaction: "$books.transaction"
}
},
{
$out: "temp_collection"
}
])
- 在您的终端中使用 `mongoexport,如下所示:
mongoexport -d dbname -c temp_collection -f _id,DisplayName,Transaction --csv > results.csv
显然,这也可以通过代码实现,只要您可以将整个集合保存在内存中,您就不必创建占位符集合。
推荐阅读
- python - 烧瓶线程池耗尽
- python - 如何将图像裁剪为例如形状。在 Discord.py 中使用 Pillow 圈?
- math - 从平面法线计算 Z 值
- python - 查找给定数据的日期(文本中:例如 2019 年 2 月 8 日)
- java - 将平面 JSON 数组转换为 JAVA 中的结构化形式
- flutter - 通过添加两个不同的列表生成第三个列表
- javascript - 无法使用 useState() 设置值
- apache-kafka - kafka中的多行消息
- javascript - 脚本已加载,但无法调用其任何函数
- python - 使用 Image Data Generator 在训练中执行 10 折交叉验证