作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在 Modulus 上运行一个分阶段的 Meteor 应用程序,想知道是否有办法在远程 mongoDB 上执行类似于“meteor reset”的操作。
我可以通过运行 db.dropDatabase();
来使用 mongo 的命令行,但这也会删除包含 mongo 数据库帐户的 system.users
。
有兴趣了解如何在部署流程中实现这一点。
最佳答案
当您运行 meteor reset
时,meteor 会递归地从以下位置删除所有目录和文件:.meteor/local
.
# source : meteor/tools/commands.js (line 806-807)
...
var localDir = path.join(options.appDir, '.meteor', 'local');
files.rm_recursive(localDir);
...
我了解到您想从存储在 MongoDB 中的数据库中删除特定的集合。有几种方法可以做到这一点:
编写循环遍历要删除的集合名称的脚本,然后执行db.getCollection(name).drop()
在每一个上。
来自 cmd: mongo [数据库] --eval "db.getCollection([collectionName]).drop();"
或来自 mongo shell:
db.getCollection([collectionName]).drop();
这是一种简单的方法:点击并删除。
如果您对 mongo 所在的服务器具有 SSH 访问权限,那么您可以将远程端口 Y 隧道连接到本地端口 X,因此 mongo 将在端口 X 上本地可用:
ssh -L27018:localhost:27017 user@host
然后在 Robomongo 中创建到 localhost:27018 的连接,并且您可以访问远程数据库。
if(Meteor.isServer){
Collection.remove({})
}
我的一个生产应用在部署新版本时删除了一些集合:
if(Meteor.isServer){
Meteor.startup(function(){
if(cleanDB){
CollectionA.remove({});
CollectionB.remove({});
CollectionC.remove({});
}
})
}
关于mongodb - Modulus 上的 Meteor 应用程序——如何重置数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25277378/
我是一名优秀的程序员,十分优秀!