【问题标题】:Delete documents using their _ids as a comparison使用它们的 _ids 作为比较来删除文档
【发布时间】:2020-10-16 20:31:57
【问题描述】:

所以,直奔问题。我们有许多拥有本地 MongoDB 的客户,每天都会生成新数据并将其存储在 .TSV 文件中,这些文件使用 mongoimport(插入、更新和合并)上传到他们的数据库,以实现增量加载。

我们已经有一个 _id 字段作为 mongo 的 Key,所以这样 mongo 可以自动检测文档是否已经存在,如果不存在,他将导入该文档,这有点增加负载(再次,mongoimport 提到以上)。

由于我们已经让插入和更新正常工作,我们现在要做的是:

  1. 如何自动删除本地mongo中没有.TSV文件的文档?

记住我们已经创建了_id,也许我们可以将它用作比较键。

基本上我们想要实现的是,存储在客户端本地 mongo 中的数据与我们导入的 .TSV 文件中存储的数据相同,因此 mongo 将成为客户端数据的“镜像”。无需每天删除和上传所有内容。

我希望它足够清楚,可以理解我们想要做什么。

谢谢!

【问题讨论】:

  • 我们讨论了多少文件?
  • 很多文档,每个客户的数量会有所不同,但是我们可以说每天我们可能需要删除几十到几千个,但我认为绝大多数会在数百

标签: mongodb mongodb-query pymongo increment delete-file


【解决方案1】:

我倾向于将 mongoimport 替换为等效的 pymongo 加载例程(必须开发),该例程加载数据并添加一个“LastUpdated”字段并添加当前日期/时间。

完成后,删除自加载开始以来未更新的所有文档。

祝你好运!

【讨论】:

  • 我们可以在 .TSV 文件中添加 LastUpdate 字段,因为我们可以完全控制它们。您对如何实现删除未更新文档的部分有任何想法或提示吗?我不知道我们是否应该在 python 中执行此操作(如果可能)或在 mongo 中创建一个查询/例程。
猜你喜欢
  • 1970-01-01
  • 2019-10-31
  • 2019-07-28
  • 1970-01-01
  • 2019-08-26
  • 2017-02-01
  • 1970-01-01
  • 2016-02-03
  • 1970-01-01
相关资源
最近更新 更多