gpt4 book ai didi

mongodb - Modulus 上的 Meteor 应用程序——如何重置数据库

转载 作者:IT老高 更新时间:2023-10-28 13:33:53 26 4
gpt4 key购买 nike

我正在 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 中的数据库中删除特定的集合。有几种方法可以做到这一点:

从 shell 或 mongo shell 中删除集合

编写循环遍历要删除的集合名称的脚本,然后执行db.getCollection(name).drop() 在每一个上。

来自 cmd: mongo [数据库] --eval "db.getCollection([collectionName]).drop();"

或来自 mongo shell:

db.getCollection([collectionName]).drop();

使用 Robomongo 从 MongoDB 中删除集合

这是一种简单的方法:点击并删除。

帮助说明是否可以使用 ssh 连接到 mongo 的服务器:

如果您对 mongo 所在的服务器具有 SSH 访问权限,那么您可以将远程端口 Y 隧道连接到本地端口 X,因此 mongo 将在端口 X 上本地可用:

ssh -L27018:localhost:27017 user@host

然后在 Robomongo 中创建到 localhost:27018 的连接,并且您可以访问远程数据库。

直接从 Meteor 应用程序中删除集合。

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/

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