首页 > 解决方案 > 如何将 Mongo 变量的结果重定向到集合,然后将其导出到 csv 文件

问题描述

我有一个初学者 MongoDB 问题,但我真的被困在这个问题上。

所以,我有一些医疗数据的数据集, 数据集 我需要计算每列的平均值和标准差,并将其存储在下表中。 我希望得到的结果

所以,我做了一个聚合

var average_age = db.ilp.aggregate(
{$match: {"age":{$ne:-1}}},
{"$group":{
"_id": null, 
"avg_age": {"$avg":"$age"}
}
})

试图将它存储到一个变量中,我得到这个变量的以下输出: { "_id" : null, "avg_age" : 44.74614065180103 }

但是当我想将它插入到一个新集合中时, by db.test.insert(average_age),我得到以下输出: 输出

完成所需的集合后,我想将其重定向到 csv 文件。

感谢您提供的任何帮助。

PS还有,我能告诉我为什么,第一次调用变量average_age时,它会输出上面显示的正确值,然后当我调用它时,它什么也不输出,就像它是空的一样。

标签: mongodb

解决方案


除了 Valijon 的出色答案之外,您还可以选择创建视图并使用mongoexport将集合直接保存为 CSV 文件。这样做的好处是您可以多次导出视图,每次导出时都会更新平均值:

db.createView('ilp_averages', 'ilp', [
  { $match: { "age": { $ne:-1 } } },
  {"$group": {
    "_id": null, 
    "avg_age": {"$avg":"$age"}
  }])

并导出:

mongoexport --host <mongodbinstance>:<port> --type csv -d=<yourdb> -c=ilp_averages -o=ilp_averages.csv

请注意,mongoexport 的正确语法取决于您使用的 MongoDB 版本,可能会略有不同。


推荐阅读