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

使用MongoDB将嵌套json数组值打印到csv中,mongodb,Mongodb,我想将嵌套的json数组输出到csv中 sample.json { "DocId":"ABC", "User":[ { "Id":1234, "Username":"sam1234", "Name":"Sam", "ShippingAddress":{ "Address1":"123 Main St.", "Address2":null,

我想将嵌套的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用户名发货地址

1234 sam1234 Sam 123北卡罗来纳州达勒姆大街

5678 sam5678 sam5678北卡罗来纳州达勒姆大街


如何在csv中打印带标题和不带标题一种方法是分两步进行

  • 在此集合上执行聚合,更改集合文档的结构,并将其输出到另一个集合中
  • 使用mongoexport将步骤1中创建的集合导出为CSV[此步骤可直接使用^-^]
  • 对于步骤1,假设我有db->test and collection->stack,那么聚合查询是:

    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
    

    在上述输出中,可以只打印csv文件中的数据,即不打印标题。