使用MongoDB导出CSV

Home

使用MongoDB导出CSV

NO, NO mongoexport

Directory

mongoexport

# 直接从某个表导出期望字段,生成CSV
mongoexport --host 10.8.8.111 --db sampleData --collection eventV4 --csv --out events.csv --fields '_id,something'

# 增加一个检索filter后导出CSV
mongoexport --host 10.8.8.111 --db sampleData --collection eventV4 --queryFile ./range.json --csv --out events.csv --fields '_id,something'

# cat range.json
{"something":{"$gt":1}}

有的时候,我们需要从mongo中导出特定的几个字段的数据保存CSV文件供分析用。虽然已经有mongoexport,但如果遇到一些层级较深的字段,肯定还是手写代码比较方便。

构建查询语句

假设我们需要从events collection抽取三个字段user/time/videoname,find语句会这么写

db.events.find({},{"user": 1, "time": 1, "videoname": 1})

稍加修改,存档成一个js文件:

// queryUsers.js
db.events.find({},{"user": 1, "time": 1, "videoname": 1}).forEach(
    function(doc) {
        print(doc.user + "," + doc.serverTime + "," + doc.videoName)
    }
)

mongo执行需求

之后用mongo执行后面的需求

mongo events queryUsers.js > whatuWant.csv

mongo <数据库名> <检索语句文件> > <导出文件>.csv

参考链接