Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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 mongoimport不首先删除数据_Mongodb_Mongoimport - Fatal编程技术网

Mongodb mongoimport不首先删除数据

Mongodb mongoimport不首先删除数据,mongodb,mongoimport,Mongodb,Mongoimport,我每晚都用mongoimport命令重置数据库。不幸的是,我知道它先删除数据库,然后再填充数据库 这意味着我的数据库在半满时被查询。有没有办法让mongoimport原子化?这可以通过先填充另一个集合,删除第一个集合,然后重命名第二个集合来实现 这是mongoimport的内置功能吗 谢谢,现在还不清楚您希望在夜间过程中表现出什么样的行为 如果您的夜间流程负责创建一个新的数据集,那么首先删除所有内容是有意义的。但是,如果您的夜间流程负责添加到现有的数据集中,则可能建议使用mongorestore

我每晚都用mongoimport命令重置数据库。不幸的是,我知道它先删除数据库,然后再填充数据库

这意味着我的数据库在半满时被查询。有没有办法让mongoimport原子化?这可以通过先填充另一个集合,删除第一个集合,然后重命名第二个集合来实现

这是mongoimport的内置功能吗


谢谢,

现在还不清楚您希望在夜间过程中表现出什么样的行为

如果您的夜间流程负责创建一个新的数据集,那么首先删除所有内容是有意义的。但是,如果您的夜间流程负责添加到现有的数据集中,则可能建议使用
mongorestore
(不使用
——drop
),因为
mongorestore
的行为是:

mongorestore
可以创建新数据库或向现有数据库添加数据。但是,mongorestore只执行插入,不执行更新。也就是说,如果将文档还原到现有数据库和集合,并且现有文档与要还原的文档具有相同的value\u id字段,则mongorestore不会覆盖这些文档

然而,这些问题似乎是次要的,因为您需要在数据库仍在使用时将其导入/恢复到数据库中。我认为无论是
mongoimport
还是
mongorestore
都不是可行的“写入机制”,当您的数据库联机并可供读取时使用。从您的问题中,您清楚地意识到问题可能由此而产生,但没有Mongo功能为您解决此问题。您可以:

  • mongoimport
    mongorestore
    过程中使系统脱机,然后在该过程完成并验证后使其重新联机

  • 使用
    mongoimport
    mongorestore
    创建并行数据库,然后在该数据库准备就绪后,切换应用程序以从该数据库读取。这是蓝色/绿色或a/B部署模型的变体


我明白了。谢谢你的意见。在此期间,我可能会断开服务连接,或者尝试构建一个新集合,然后手动在第一个集合上重命名它。