使用MongoDB将嵌套的json数组值打印到csv中

时间:2014-10-08 08:34:23

标签: mongodb

我想将嵌套的json数组输出到csv。

sample.json

{
   "DocId":"ABC",
   "User":[
      {
         "Id":1234,
         "Username":"sam1234",
         "Name":"Sam",
         "ShippingAddress":{
            "Address1":"123 Main St.",
            "Address2":null,
            "City":"Durham",
            "State":"NC"
         }
      },
      {
         "Id":5678,
         "Username":"sam5678",
         "Name":"Sam",
         "ShippingAddress":{
            "Address1":"5678 Main St.",
            "Address2":null,
            "City":"Durham",
            "State":"NC"
         }
      }
   ]
}
  

在这里输入代码

以上是示例文件,不得打印DocID,csv中的输出必须仅用于数组内容

Id用户名名称ShippingAddress

1234 sam1234 Sam 123 Main St.Durham NC

5678 sam5678 Sam 5678 Main St.Durham NC

如何使用标题进行打印,以及使用csv中的标题

1 个答案:

答案 0 :(得分:2)

一种方法是分两步完成

  1. 对此集合执行聚合并更改集合文档的结构并将其输出到另一个集合中
  2. 使用mongoexport将步骤1中创建的集合导出为CSV [此步骤可以直接使用^ - ^]。
  3. 对于第1步,让我们说我有db - >测试和收集 - >堆栈,所以聚合查询是:

    db.stack.aggregate([
        { $unwind:"$User"},
        { $project : { Id : "$User.Id" , Username:"$User.Username", Name:"$User.Name", ShippingAddress:"$User.ShippingAddress", _id:0} },
        { $out: "result" }
    ])
    

    对于第2步,请使用mongoexport终端实用程序:

    mongoexport --db test --collection result --csv --fields "Id,Username,Name,ShippingAddress" --out file.csv