前提:数据库:MongoDB 数量级:千万级

问题:经常需要用到一个特定条件的最新数据,但是这三个数据在不同表里面,想着编写个查询语句,就不用挨个表去查看。

预想方式一
在 navicat 查询语句中编写一个聚合查询语句,但是不知道是什么原因查了 600s 没出结果就自动断开(可能是超时了),最终这个方式以失败告终 qaq
预想方式二
用 pytest 编写单表查询语句,需要的查询条件在查询语句外面传递。最终借助着小机器人写出来了。
反思
1.对时间类型转换操作不熟悉导(不理解为要用 datetime.datetime.strptime 转换获取的 datetime.datetime.now())才能被 Mongo 查出来
2.Mongo 集合名写错导致一直查不到数据,这里以后要加个集合能连接正确的判断。
3.查询字段名写错导致一直查不到数据
4.这是最后发现的问题,也是最大的问题,编写思路有严重的问题,其实一开始只需要用到两个表,在对一张表里面的结果字段做筛选,就可以代替另一张表的条件查询(这里的条件查询时间导致我编写调试这个简单的脚本一共花了 4 个小时),因为这里的时间没有加索引,也就是不管我筛选多么短的时间,他都是从第一条最早创建的数据逐条匹配。这次对索引有了切身的体会。

收获
1.查询的速度的快慢取决于:网速 + 数据量 + 索引
2.编写思路好坏取决于对数据库的熟悉程度(索引 + 表结构)
3.还是想再夸一下索引,索引不是快一点点,是直接快到飞起


↙↙↙阅读原文可查看相关链接,并与作者交流