我有一个引用 GridFS 文件的集合,通常每条记录 1-2 个文件。这些集合相当大 - 父集合中大约有 705k 条记录,以及 790k GridFS 文件。随着时间的推移,出现了许多孤立的 GridFS 文件 - 父记录已被删除,但引用的文件并未被删除。我现在正尝试从 GridFS 集合中清除孤立文件。
这里建议的方法的问题在于,将 700k 记录组合成一个大的 ids 列表会导致内存中大约 4mb 的 Python 列表 - 将其传递到 Mongo 中 fs.files 集合上的 $nin 查询实际上需要永远。执行相反的操作(获取 fs.files 中所有 id 的列表并查询父集合以查看它们是否存在)也需要很长时间。
有人遇到过这个问题并开发出更快的解决方案吗?