重命名集合与更新集合

时间:2015-12-11 09:05:57

标签: node.js mongodb mongoskin

我有一个我需要每天更新的mongo数据库(删除不相关的文档并添加新文档)。 数据库没有分片。

我从外部数据主数据中获取数据,这不太容易使用。

有两种选择: 1.将整个数据库(不是那么大)重新加入临时集合,然后将其重命名为旧集合名称(将dropTarget设置为true) 2.自己做一些艰苦的工作,删除旧的工作,并从数据掌握中找出哪些新文件是相关的并将它们插入到数据库中

选项1显然是可以预见但影响是什么?我在很晚的时候进行了这项维护工作,但我不希望用户在重命名过程中查询数据库时出错。

使用重命名覆盖集合是一种标准方式来完成任务还是我滥用API? :)

1 个答案:

答案 0 :(得分:0)

根据documentation <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select name="url" id="listUpdate"> <option selected="" disabled="" value="">Choose</option> <option value="http://www.ulr1.ee">ulr1</option> <option value="http://www.url2.ee">ulr1</option> <option value="www.url3.ee">ulr1</option> </select> <button id='opacity'>Opacity</button>阻止操作期间的所有数据库活动。如果您的用户设置了足够大的时间,他们将不会直接受此重命名操作的影响,但是,由于数据集可能会在他们的脚下发生变化,因此可能会产生副作用。例如,重命名集合可能会使打开的游标无效,这会中断当前正在返回数据的查询。

关于在生产中重命名集合,我个人会尽可能避免这种情况,首先是因为上面的游标问题,但更重要的是因为不完整的renameCollection操作会使目标集合处于不可用状态并需要手动干预清理。相反,我会使用带有renameCollection的{​​{1}}覆盖整个文档,或者如果新记录不存在则插入新记录。