我在Windows 10平台上,我想每天删除我的数据库。为此,我将创建一个可执行的cron基本shell文件。但这对我不起作用。有没有猜到为什么它没有执行任务?
deletedb.sh(带扩展名的文件名)
#!/usr/bin/env mongo
var db = new Mongo().getDB("secondary");//secondary is my db name
db.dropDatabase();
答案 0 :(得分:0)
您的示例看起来应该可以正常工作,假设您没有启用身份验证并且正在连接到侦听默认主机(localhost)和端口(27017)的服务器。
但是,运行new Mongo()
会尝试创建一个新连接,如果刚刚连接,这个连接就没有用了。
您的示例可以简化为unix shell incantation:
#!/usr/bin/env bash
mongo localhost/secondary --eval "db.dropDatabase()"
如果您想要放弃预期的数据库,可以明确选择要删除的数据库:
#!/usr/bin/env bash
mongo localhost/secondary --eval "db.getSiblingDB('secondary').dropDatabase()"
如果您的目的是清理旧的测试数据,另一种考虑的方法是使用MongoDB的TTL (Time-To-Live) indexes在特定秒数或某个到期时间之后使集合中的数据到期。