【问题标题】:How to store output of array in csv using MongoDB如何使用 MongoDB 将数组的输出存储在 csv 中
【发布时间】:2014-10-10 19:28:58
【问题描述】:

示例 json 数据文件

{
  "Includes": {
    "Employees": {
      "14": {
        "name": "john",
        "age": 12,
        "activity": {
          "Count": 3502,
          "RatingValue": 5
        }
      },
      "17": {
        "name": "smith",
        "age": 23,
        "activity": {
          "Count": 232,
          "RatingValue": 5
        }
      }
    }
  }
}

js 用于检索嵌套文档并存储在数组中

var result = [];

db.details.find().forEach(function(doc) {
    var Employees = doc.Includes.Employees;
    if (Employees) {
        for (var key in Employees) {
            var Employee = Employees[key];
            var item = [];
            item.push(key);
            item.push(Employee.name);
            item.push(Employee.age);
            item.push(Employee.activity.Count);
            item.push(Employee.activity.RatingValue);
            result.push(item.join(","));
        }
    }
});

print(result);

我们如何使用 mongoexport 将数组的输出存储在 2 行的 csv 中,因为数据包含 2 行。在csv输出必须是

14,约翰,12,3502,5

17,史密斯,23,232,5

【问题讨论】:

  • 它工作正常,你只是有一个错字:var Employees = doc.Includes.Empoyees;。员工 -> 员工
  • 这是一个错误。获取输出,不知道如何存储在csv中
  • 你想如何存储它?你需要复制粘贴结果什么的
  • 14,john,12,3502,5 17,smith,23,232,5 它必须在单独的列中,即第一行第一列中的 14,第二列中的约翰,依此类推.. 第一列中的 17第二行的列..

标签: javascript mongodb csv


【解决方案1】:
var csv=""; //this is the output file
for(var i=0;i<result.length;i++){//loop through output
    csv+=result[i]+"\n"; //append the text and a newline
}
window.open('data:text/csv;' + (window.btoa?'base64,'+btoa(csv):csv)); //open in a new window, chrome will automatically download since it is a csv.

【讨论】:

  • 出现错误:未定义参考错误窗口
  • 你没有使用浏览器吗?
  • 在问题中提及可能有用。从我的代码中删除最后一行并打印csv 变量或以某种方式将其保存到文件中。
  • 您可以只打印/console.log csv 然后保存 cli 的输出。
【解决方案2】:

将最后的 print(result); 更改为以下内容:

print(result.join("\n"));

然后调用您的脚本并将输出定向到 CSV 文件,如下所示:

mongo --quiet "full-path-to-script.js" > "full-path-to-output.csv"

注意:--quiet arg 禁止标准 Mongo 标头输出(shell 版本和初始数据库)。

我创建了一个 details 集合,并将您的 JSON 文档添加到其中,然后运行修改后的脚本会生成以下 CSV 文件内容:

14,john,12,3502,5
17,smith,23,232,5

如果您还想要一个 CSV 标题行,请在此处查看我对您几乎相同的问题的几乎相同的答案:https://stackoverflow.com/a/26310323/3212415

【讨论】:

    猜你喜欢
    • 2020-05-03
    • 2019-12-28
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    相关资源
    最近更新 更多