Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB:如何在清空和重新填充集合时防止读取访问?_Mongodb - Fatal编程技术网

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

MongoDB:如何在清空和重新填充集合时防止读取访问?,mongodb,Mongodb,我有一个包含“参考数据”的MongoDB(v2.2.0)集合。我需要定期用来自外部源的数据替换该集合中的所有文档。在替换引用数据时,任何内容都不能访问集合,这一点很重要 我认为最好的解决方案是使用不同的名称创建一个新的(即“临时”)集合,加载数据,然后重命名它,这对吗 例如: 创建收藏myCollection TEMP 将所有文档插入myCollection TEMP 重命名临时集合以替换(即,在重命名之前删除)当前集合db.myCollection temp.renameCollection(

我有一个包含“参考数据”的MongoDB(v2.2.0)集合。我需要定期用来自外部源的数据替换该集合中的所有文档。在替换引用数据时,任何内容都不能访问集合,这一点很重要

我认为最好的解决方案是使用不同的名称创建一个新的(即“临时”)集合,加载数据,然后重命名它,这对吗

例如:

  • 创建收藏
    myCollection TEMP
  • 将所有文档
    插入myCollection TEMP
  • 重命名临时集合以替换(即,在重命名之前删除)当前集合
    db.myCollection temp.renameCollection('myCollection',true)

  • 从我可以看出,没有办法安全地“清空”一个集合,做一个“批量导入”文档,并且确保在这个过程中间没有其他东西访问集合。

    < P>是的,创建一个临时集合,然后重命名是走的路。这也是其他技术中的常见方法。例如,在计算机图形学中。在不可见的背景平面中准备一帧,然后将其与屏幕交换。这会立即更新图片,而不会出现闪烁或其他瑕疵