项目中遇到一个需求,需要将一个千万条记录级别的mongodb库提取部分字段转到postgresql中。
由于mongodb一直在更新,所以每隔一段时间就需要倒一次数据。所以想实现增量更新的功能。
问题是,我要如何保存上一次python遍历到的位置?
ps:mongodb的_id字段是自动生成的,其他字段无严格的递增或递减的数量关系。
项目中遇到一个需求,需要将一个千万条记录级别的mongodb库提取部分字段转到postgresql中。
由于mongodb一直在更新,所以每隔一段时间就需要倒一次数据。所以想实现增量更新的功能。
问题是,我要如何保存上一次python遍历到的位置?
ps:mongodb的_id字段是自动生成的,其他字段无严格的递增或递减的数量关系。
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
如果文档中的
_id
字段是由 mongo 自动生成的, 那么本身这个字段就带有时序, 因为 ObjectId 四要素中就有插入时间, query 语句中啥也不写, 其结果就是按时序排序的. 下面语句就可以返回 collection 中的最新 10 条数据:
也可以根据 ObjectId 包含创建时间的特性, 通过构造 ObjectId 的办法, 来指定查询某时间段内的文档. 下面的 python 程序可以查询 2018-04-10 日之后插入到 collection 中的文档 (手敲, 亲测有效):
所以, 你的需求中, 只需要保存
_id
字段即可, 或者保存一个时间戳也可以.另, 如果你的这个 collection 被设置为 Capped Collections, 那么你还可以考虑使用 Tailable Cursors 来时刻获取更新数据. 当然我估计这应该不符合你的使用场景.