MongoDB:如何在清空和重新填充集合时阻止读取访问?

时间:2012-10-11 22:58:41

标签: mongodb

我有一个包含“参考数据”的MongoDB(v2.2.0)集合。我需要定期将该集合中的所有文档替换为来自外部源的数据。重要的是,在替换参考数据时,没有任何东西可以访问集合。

我认为最好的解决方案只是创建一个具有不同名称的新(即“临时”)集合,用数据加载,然后重命名它是否正确?

例如:

  1. 创建集合myCollection-TEMP
  2. 插入所有文件into myCollection-TEMP
  3. 重命名临时集合以替换(即在重命名之前删除)当前集合db.myCollection-TEMP.renameCollection('myCollection', true)
  4. 据我所知,没有办法安全地“清空”一个集合,对文档进行“批量导入”,并确保在该过程中没有其他任何东西可以访问该集合。

1 个答案:

答案 0 :(得分:1)

是的,创建临时集合然后重命名是可行的方法。这也是其他技术的常用方法。例如,计算机图形学中的double buffering。您在不可见的背景平面中准备一个框架,然后将其与屏幕交换。这会立即更新图片而不会出现闪烁或其他伪影。