首页 > 解决方案 > 在不影响工作集的情况下清除 MongoDB 中的文档

问题描述

我们有一个文档集合,每个文档都有一个与之关联的时间窗口。(例如,“fromDate”和“toDate”等字段)。一旦文档过期(即 toDate 已过去),我们的客户将不再访问该文档。

所以我们想清除这些文档以减少集合中的文档数量,从而使我们的查询更快。然而,我们后来意识到这些过去的数据对于分析数据变化的模式可能很重要,因此我们决定将其存档而不是完全清除它。所以这就是我想出的。

  1. 假设我们有一个“collectionA”,其中包含过去版本的文档
  2. 查询“collectionA”中所有过去的文档。(在辅助服务器上进行查询)
  3. 将它们插入到名为“collectionA-archive”的单独集合中
  4. 从collectionA中删除成功插入归档的文档
  5. 删除“collectionA-archive”中满足一定条件的文档。(我们不想保留一个庞大的档案)

我的问题是,即使我在辅助服务器上进行查询,由于插入发生在主服务器中,插入到归档集合中的文档是否会进入主服务器的工作集?我们最不需要的是将这些过去的文档存储在 Primary 的 RAM 中,这可能会影响我们实时 API 的性能。

我知道,一种解决方案可能是将过去的文档插入单独的数据库服务器。但是购买另一台服务器有点麻烦。所以想知道这是否可以在一台服务器内实现。

标签: mongodbmongoosenosql

解决方案


推荐阅读