如何在 AWS 中将 mongo 数据库版本 4.20 降级到 3.6?



我在保存时收到以下错误, "未知修饰符:$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 3.6 关于$pushAll的发行说明:

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

不要使用 $pushAll,而是将 $push 运算符与 $each 修饰符一起使用。

引用的例子:

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 系列在 2020 年 1 月之后将不再受支持,因此安装 3.4 不是一个很好的长期解决方案。

最新更新