Mongodb mongoimport不首先删除数据
我每晚都用mongoimport命令重置数据库。不幸的是,我知道它先删除数据库,然后再填充数据库 这意味着我的数据库在半满时被查询。有没有办法让mongoimport原子化?这可以通过先填充另一个集合,删除第一个集合,然后重命名第二个集合来实现 这是mongoimport的内置功能吗Mongodb mongoimport不首先删除数据,mongodb,mongoimport,Mongodb,Mongoimport,我每晚都用mongoimport命令重置数据库。不幸的是,我知道它先删除数据库,然后再填充数据库 这意味着我的数据库在半满时被查询。有没有办法让mongoimport原子化?这可以通过先填充另一个集合,删除第一个集合,然后重命名第二个集合来实现 这是mongoimport的内置功能吗 谢谢,现在还不清楚您希望在夜间过程中表现出什么样的行为 如果您的夜间流程负责创建一个新的数据集,那么首先删除所有内容是有意义的。但是,如果您的夜间流程负责添加到现有的数据集中,则可能建议使用mongorestore
谢谢,现在还不清楚您希望在夜间过程中表现出什么样的行为 如果您的夜间流程负责创建一个新的数据集,那么首先删除所有内容是有意义的。但是,如果您的夜间流程负责添加到现有的数据集中,则可能建议使用
mongorestore
(不使用——drop
),因为mongorestore
的行为是:
mongorestore
可以创建新数据库或向现有数据库添加数据。但是,mongorestore只执行插入,不执行更新。也就是说,如果将文档还原到现有数据库和集合,并且现有文档与要还原的文档具有相同的value\u id字段,则mongorestore不会覆盖这些文档
然而,这些问题似乎是次要的,因为您需要在数据库仍在使用时将其导入/恢复到数据库中。我认为无论是mongoimport
还是mongorestore
都不是可行的“写入机制”,当您的数据库联机并可供读取时使用。从您的问题中,您清楚地意识到问题可能由此而产生,但没有Mongo功能为您解决此问题。您可以:
- 在
或mongoimport
过程中使系统脱机,然后在该过程完成并验证后使其重新联机mongorestore
- 使用
或mongoimport
创建并行数据库,然后在该数据库准备就绪后,切换应用程序以从该数据库读取。这是蓝色/绿色或a/B部署模型的变体mongorestore