将MongoDB导出成csv文件

阅读更多

   来源:https://plus.google.com/+VicNgrail/posts/ebS9JUtFopw。

  Mongodb可以存储非结构化数据,要将这些数据导出为标准的结构化数据会存在一定的困难。用集算器结合MongoDB可以方便的导出标准化数据,下面看一下具体做法。

  Collection test的部分数据如下:

/* 0 */

{

  “_id” : ObjectId(“5518f6f8a82a704fe4216a43″),

  “id” : “No1″,

  “cars” : {

    “name” : “Putin”,

    “car” : ["porche", "bmw"]

  }

}

 

/* 1 */

{

  “_id” : ObjectId(“5518f745a82a704fe4216a44″),

  “id” : “No2″,

  “cars” : {

    “name” : “jack”,

    “car” : ["Toyota", "Jetta", "Audi"]

  }

}

  需要将其导出为CSV文件,格式如下:


将MongoDB导出成csv文件_第1张图片
 

  集算器代码:


将MongoDB导出成csv文件_第2张图片
 

   A1:连接MongoDB,连接字格式为mongo://ip:port/db?arg=value&…

  A2:使用find函数从MongoDB中取数,形成游标。集合是test,过滤条件是空,取出_id之外的所有字段。集算器的find函数和mongdb的find函数类似,过滤条件的写法遵循mongodb规范。

  A3:取出需要的字段,拼合成结构化二维表,结果仍然是游标。其中~表示A2中的每个document,函数conj表示纵向合并。

  A4:将A3导出为逗号分隔的文本文件。@t表示导出时带列名。集算器引擎会自动管理缓存,每次从游标取一批记录到内存进行计算。

  A4:关闭MongoDB。

  如果用户想自己管理每批处理的数据,也可以用下面的代码:


将MongoDB导出成csv文件_第3张图片
 

   A3:循环从游标读数,每次读1000条到内存。A3的作用范围是缩进的B3到B4,其间可以用A3来引用循环变量。A3中的数据如下:



 

   B3:将本批次数据转换为结构化二维表,如下:


将MongoDB导出成csv文件_第4张图片
 

    B4:将本批次的计算结果追加到文件中。@a表示追加。

  • 将MongoDB导出成csv文件_第5张图片
  • 大小: 20.9 KB
  • 将MongoDB导出成csv文件_第6张图片
  • 大小: 33.2 KB
  • 将MongoDB导出成csv文件_第7张图片
  • 大小: 34.5 KB
  • 将MongoDB导出成csv文件_第8张图片
  • 大小: 20.3 KB
  • 将MongoDB导出成csv文件_第9张图片
  • 大小: 13.9 KB
  • 查看图片附件

你可能感兴趣的:(mongodb,导出,文本文件,csv,集算器)