【问题标题】:How do I export collection of books to csv in MongoDB?如何将书籍集合导出到 MongoDB 中的 csv?
【发布时间】:2020-10-26 21:12:12
【问题描述】:

我有一个名为“results”的集合,取自一个聚合,它包含如下数据:

{
    "_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 导出。
  • 谢谢,但我已经尝试了一段时间,而且我对 MongoDB 很陌生。我将更新问题以显示我一直在尝试的内容以及出了什么问题
  • 您还需要提及字段。试试看。

标签: arrays mongodb mongodb-query pymongo


【解决方案1】:

Mongo 有一个名为 mongoexport 的内置终端方法,问题是您不能将聚合与它一起使用,因为它旨在通过查询过滤器导出更基本的数据,而不是完全聚合和数据处理。

您可以像这样解决这个问题:

  1. 使用您的管道和$out 创建一个新的临时集合

db.results.aggregate([
    {
        $unwind: "$books"
    },
    {
        $project: {
            _id: 1,
            DisplayName: "$books.DisplayName",
            Transaction: "$books.transaction"
        }
    },
    {
        $out: "temp_collection"
    }
])
  1. 在您的终端中使用 `mongoexport,如下所示:
mongoexport -d dbname -c temp_collection -f _id,DisplayName,Transaction --csv > results.csv

显然,这也可以通过代码实现,您不必创建占位符集合,只要您可以将整个集合保存在内存中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    相关资源
    最近更新 更多