gpt4 book ai didi

mongodb - mongodb删除的收集在mongodump和mongorestore之后继续返回

转载 作者:行者123 更新时间:2023-12-02 19:49:31 25 4
gpt4 key购买 nike

我刚刚创建了一个数据集,但是仍然存在一个“items”集合,并且我使用db.items.drop()命令(在执行到我的Docker容器中之后)摆脱了这个问题,它似乎已成功删除了它。但是当我运行以下2个脚本时(删除集合后):

保存脚本:

#!/usr/bin/env bash

MONGO_DB_NAME="test-1"
DATA_NAME="test-data"

docker exec ${MONGO_DB_NAME} mongodump --quiet --out /tmp/${DATA_NAME}
mkdir -p ./backup
docker cp ${MONGO_DB_NAME}:/tmp/${DATA_NAME} ./backup/${DATA_NAME}
docker exec ${MONGO_DB_NAME} rm -rf /tmp/${DATA_NAME}

恢复脚本:
#!/usr/bin/env bash

MONGO_DB_NAME="test-1"
DB_NAME="docker-node-mongo"
DATA_NAME="test-data"

docker exec -it $(docker ps -aqf "name=${MONGO_DB_NAME}") mongo ${DB_NAME} --eval "db.dropDatabase();"
docker cp ./backup/$DATA_NAME $(docker ps -aqf "name=${MONGO_DB_NAME}"):/tmp
docker exec -it $(docker ps -aqf "name=${MONGO_DB_NAME}") mongorestore --drop /tmp/${DATA_NAME}

项目集合马上回来。有人知道为什么是这样吗?我希望它永远消失。

编辑:当我从集合中删除单个项目并运行上述脚本时,它们不会再出现。但是当我将整个收藏放下时,收藏会不断回来(里面什么也没有)。

最佳答案

mongodump命令不会删除--out路径中已经存在的文件。正在备份的集合文件将被覆盖,但是不再存在的集合文件将不会被修改,将“items”文件保留在下次运行mongorestore的地方。

为确保不会发生这种情况,请在运行mongodump之前移开或删除现有的备份目录并创建一个新的空目录。

关于mongodb - mongodb删除的收集在mongodump和mongorestore之后继续返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61787875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com