在Ubuntu 16.04中升级MongoDB 2.6.12至4.2

在Ubuntu 16.04中升级MongoDB 2.6.12至4.2,mongodb,Mongodb,我有一个使用MongoDB(版本2.6.12)的web应用程序,托管在DigitalOcean的(Ubuntu 16.04)服务器上 我喜欢使用Robo3T连接到远程数据库并进行简单查询 现在,我需要执行包含$lookup之类的查询,他们告诉我MongoDB 2.16.12版不支持这种查询。所以我需要认真备份我的数据库并升级MongoDB 在我看来,这似乎太复杂了:我不知道我是否有MongoDB驱动程序、共享集群、独立实例等等 有人还说,我们需要一步一步地做:升级到某个版本,然后升级到4.2 我

我有一个使用MongoDB(版本2.6.12)的web应用程序,托管在DigitalOcean的(Ubuntu 16.04)服务器上

我喜欢使用Robo3T连接到远程数据库并进行简单查询

现在,我需要执行包含
$lookup
之类的查询,他们告诉我MongoDB 2.16.12版不支持这种查询。所以我需要认真备份我的数据库并升级MongoDB

在我看来,这似乎太复杂了:我不知道我是否有MongoDB驱动程序、共享集群、独立实例等等

有人还说,我们需要一步一步地做:升级到某个版本,然后升级到4.2

我可以信赖吗?我想在行动之前确定

编辑1:这里是
models/Users.js
中代码的一部分:

addAccountWOCheck(profile) {
    return new Promise((resolve, reject) => {
        var x = {}; x[profile.provider] = profile;
        var collection = new this.user(x);
        this.setPassword(x, profile.password);
        delete collection.local.password;
        delete collection.local.passwordRepeat 
        collection.save((err, data) => { if (err) throw (err); resolve(data) }) // {JavaScript}: only "collection.save()" does not work here
    })
}

setPassword(collection, password) {
    var salt = crypto.randomBytes(16).toString('hex');
    var hash = crypto.pbkdf2Sync(password, salt, 1000, 64, 'SHA1').toString('hex');
    collection.local.hash = hash;
    collection.local.salt = salt
}
是8岁,所以链接可能不再工作

MongoDB驱动程序通常是应用程序中用来处理连接到数据库以进行查询、插入等操作的库。如果不升级驱动程序就将数据库从2.6升级到4.2,它可能无法连接。最好先升级驱动程序,然后升级数据库

如果要使用mongodump备份数据,并使用mongorestore将其插入升级后的数据库,则无需分步升级

  • 使用mongodump备份数据集
  • 卸载现有版本
  • 遵循MongoDB 4.2的说明
  • 使用mongorestore恢复数据
2.6和更新版本之间的主要变化之一是身份验证。MongoDB CR在4.2中根本不受支持,因此升级后可能需要重新创建所有用户


MMAP也消失了,但当您使用备份/还原方法升级时,这应该不是问题。

谢谢您。。。“因此,升级后您可能需要重新创建所有用户”==>备份/恢复方法是否会自动重新创建所有用户?我应该手动做些特别的事情吗?我不确定,从2.6.12升级到4.2是一个巨大的飞跃。MongoDB CR在4.0中被删除,因此恢复可能根本不会创建用户。如果确实如此,您将至少需要重置所有密码。您可能需要重新创建所有用户。我可以使用备份/还原方法在使用MongoDB 4+的本地主机中还原用户。这是否意味着服务器升级不会有问题?如果您按照以下步骤进行,尤其是,您应该能够从3.0开始mongodump,安装干净、空的4.2和mongorestore,而不会中断用户。肯定要先备份并升级应用程序/驱动程序。2.6版本中未提供SCRAM-SHA-1: