MongoDB到CSV

每隔一段时间,我需要给驻留在MongoDB中的非技术用户(例如业务分析师)提供数据; 因此,我将目标数据导出为CSV文件 (将它们导入Excel或类似工具后,他们大概可以对其进行切片和切块)。 Mongo有一个方便的导出实用程序 ,其中包含很多选项,但是,对于如何正确以CSV格式导出数据,存在一个突出的错误和一些普遍的困惑

因此,如果您需要将MongoDB中的某些特定数据导出为CSV格式,请按以下步骤操作。 关键参数是连接信息,包括身份验证,输出文件,最重要的是要导出的字段列表。 此外,您可以提供转义JSON格式的查询。

您可以在Mongo安装bin目录中找到mongoexport实用程序。 我倾向于使用冗长的参数名称和显式的连接信息(即,不是URL语法,我更喜欢直接拼出主机,端口,数据库等)。 当我针对特定数据时,我将指定集合; 而且,我将通过查询进一步过滤数据。

可以通过$oid格式引用ObjectId 。 此外,您需要转义所有JSON引号。 例如,如果我的查询针对一个users集合并由account_id (这是一个ObjectId )进行过滤,则通过mongo shell进行的查询将是:

Mongo Shell查询

db.users.find({account_id:ObjectId('5058ca07b7628c0002099006')})

通过命令行àla monogexport ,它转换为:

集合和查询

--collection users --query "{\"account_id\": {\"\$oid\": \"5058ca07b7628c0002000006\"}}"

最后,如果只想导出user文档中的一部分字段,例如nameemailcreated_at ,则需要通过fields参数提供它们,如下所示:

字段声明

--fields name,email,created_at

将所有内容放在一起将产生以下命令:

放在一起

mongoexport --host mgo.acme.com --port 10332 --username acmeman --password 12345  \
--collection users --csv --fields name,email,created_at --out all_users.csv --db my_db \
--query "{\"account_id\": {\"\$oid\": \"5058ca07b7628c0999000006\"}}"

当然,您可以将其放入bash脚本并使用bash方便的$1$2等变量对collectionfields ,输出文件和查询进行参数化。

参考: The Disco Blog博客中的JCG合作伙伴 Andrew Glover从MongoDB转换为CSV

翻译自: https://www.javacodegeeks.com/2013/06/mongodb-to-csv.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值