使用mongodb统计支付宝个人消费信息
把支付宝导出记录导入mongodb,然后通过数据库查数据
1.支付宝excel导入mongodb
搜索相关文档后得出mongodb可以导入csv格式的文件使用mongoimport
这边有个插曲:
在zsh中运行mongo命令时报错说zsh: command not found: mongo
于是找到我的mongo安装目录mongodb-osx-x86_64-3.4.0/bin
傻傻的像windows一样直接运行mongo结果依然报错zsh: command not found: mongo这不科学啊
找到原来记录说要用 ./mongo命令才能执行。输入该命令Ok
1 | # pwd查看当前目录 |
mongo命令不能全局使用这怎么可以。。开搞让这个命令全局可用
其实也简单只需要把mongodb-osx-x86_64-3.4.0/bin目录放到PATH即可
1.打开 应用程序 -> 实用工具 -> 终端;
2.在终端中定位到自己用户的主目录,输入: cd ~;
3.创建一个空文件,输入:touch .bash_profile ;
4.编辑这个文件,输入:open .bash_profile ;
5.在这个文件中输入:export PATH=${PATH}:<文件目录>;(将”<文件目录>”替换成自己想要的目录)
例如:export PATH=${PATH}:mongodb-osx-x86_64-2.6.1/bin(我把下载后的文件直接放到了根目录);
6.如果需要添加其他的环境变量例如JAVA_HOME,可以输入:export JAVA_HOME=/Library/Java/Home ;
7.source .bash_profile重启终端,测试,这个时候就可以在用户主目录使用上面配置过的配置文件进行设置mongod –config /mongodb/etc/mongod.conf 来启动数据库了,点击终端Commond+N打开一个新的终端,使用mongo命令来连接数据库,对数据库进行操作,比如:show dbs 显示所有的集合
因为之前已经设置过了,不知道什么原因导致PATH重置,只需添加PATH并使用命令source .bash_profile重启终端即可
继续mongoimport命令mongoimport --db test --collection alipay --file /Users/zyx/Downloads/alipay_record_20170925_1718_1.csv --type csv --headerline --mode upsert
1 | ➜ ~ mongoimport --db test --collection alipay --file /Users/zyx/Downloads/alipay_record_20170925_1718_1.csv --type csv --headerline --mode upsert |
成功导入107条记录
1 | > db.alipay.find().limit(1).pretty() |
又出现两个错误
1.乱码
2.字段也不对啊
先删掉再重新导入
1 | > db.alipay.remove({}) |
务必删掉上面和下面的统计信息后导入
1 | ➜ ~ mongoimport --db test --collection alipay --file /Users/zyx/Downloads/alipay_record_20170925_1718_2.csv --type csv --headerline --mode upsert |
再次进入mongo查看
1 | > db.alipay.find().limit(1).pretty() |
2.发现字段对了但是乱码问题依旧存在
使用其他文本编辑器(nodepad++,editplus,atom等)选择字符集为GB312打开才正常显示,使用utf-8重新保存该csv文件并再次导入即可
1 | > db.alipay.find().limit(1).pretty() |
查看下最近一年经过支付宝的消费情况
先导入数据mongoimport --db test --collection alipay --file /Users/zyx/Downloads/alipay_record_20170927_1409_2.csv --type csv --headerline --mode upsert
Q1:查看饿了么的花费
1 | # 顺便看看饿了么上花了多少钱 |
结果怎么是0,明显又错了
查找了N久在官方文档上查到了相关信息
原因只有两种
1.全部都非数字返回0
2.该字段不存在返回0
我这次就是原因,找了N久发现可以按照该字段排序,而且该字段全部有值,但是返回的却是0
最后发现字段名错误
Q2:mongodb如何按照某字段做增量导入
1 | # 创建交易号的index,设置该列唯一 |
只需要给某字段添加索引并设置唯一即可
再次导入相同交易号时就无法导入
Q3:MongoDB某列类型修改(原类型为String修改后为Date)
根据付款时间段进行统计的时候发现没结果,仔细查看发现这个字段是字符串需要把字符串转成日期
1 | # 查看该字段为字符串的个数 |
*** 最后才发现一年的数据量其实也没多少 直接用excel的筛选求和更好 真不应该因为手里有🔨就把所有问题都看成钉子 ***