【问题标题】:How to downgrade mongo db version 4.20 to 3.6 in aws?如何在 aws 中将 mongo db 版本 4.20 降级到 3.6?
【发布时间】:2019-10-08 16:46:40
【问题描述】:

保存时出现以下错误, “未知修饰符:$pushAll。需要一个有效的更新修饰符或指定为数组的管道样式更新” 我问了专家,他们建议降级MongoDB的版本。 我现在的版本是v4.2,需要改成v3.4。

我尝试了以下命令,但出现错误。

db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )

错误:

{
    "ok" : 0,
    "errmsg" : "Invalid command argument. Expected '4.2' or '4.0', found 3.6 in: { setFeatureCompatibilityVersion: \"3.6\", lsid: { id: UUID(\"b146274a-8229-4e16-aec6-bfd13bebca83\") }, $db: \"admin\" }. See http://dochub.mongodb.org/core/4.0-feature-compatibility.",
    "code" : 2,
    "codeName" : "BadValue"
}

请帮我解决这个问题。

【问题讨论】:

    标签: mongodb docker mongoose dockerfile


    【解决方案1】:

    根据MongoDB 3.6 release notes regarding $pushAll

    MongoDB 3.6 删除了已弃用的 $pushAll 运算符。该运算符自 2.4 起已被弃用。

    使用带有 $each 修饰符的 $push 运算符,而不是 $pushAll。

    引用的例子:

    db.students.update(
       { name: "joe" },
       { $push: { scores: { $each: [ 90, 92, 85 ] } } }
    )
    

    也就是说,解决此问题的最佳方法是将代码中的$pushAll 替换为示例中的表单。他们都做同样的事情,所以它是一个直接的替代品。

    如果不能修改代码,那就更复杂了。不支持在多个主要版本之间降级。从 4.2.0,您可以降级到 4.0,但不能降级到 3.4(落后 3 个主要版本)。

    由于您无法从 4.2.0 降级到 3.4,您需要转储数据库的当前内容,安装 3.4,然后恢复数据。话虽如此,降级以适应已删除的功能绝不是一个好主意。

    请注意,MongoDB 3.4 系列将不再受支持past January 2020,因此安装 3.4 不是一个好的长期解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-22
      • 1970-01-01
      • 2021-03-07
      • 1970-01-01
      • 2019-03-06
      • 1970-01-01
      • 2019-09-19
      • 1970-01-01
      相关资源
      最近更新 更多