MongoDB不能使用part遍历element
MongoDB cannot use the part to traverse element
我的数据库中有一个这样的项目架构:
Project: {
_id: ObjectID(),
// some data
dashboard_group: [
0: {
_id: ObjectID(),
dgr_nom: String,
dgr_enable
},
// others dashboards
]
}
对于每个项目,它只能启用一个仪表板。因此,在 'dashboard_group' 数组中添加新的仪表板(已启用)之前,我必须将所有其他仪表板 (dgr_enable) 设置为 false。
为了不必检索已启用仪表板的索引,我使用标识符 $[] 将所有仪表板设置为 false。
这是我的要求:
db.Project.update({
_id: my_pro_id
},
{
$set: {
"dashboard_group.$[].dgr_enable": false
}
}, function(err) {
});
但是 Mongo return 我这个错误信息:
"cannot use the part (dashboard_group of dashboard_group.$[].dgr_enable) to traverse the element ({dashboard_group: [ { _id: ObjectId('such id'), dgr_nom: "much noun", dgr_enable: true } ]})"
我已经尝试使用标识符 $,它没有 return 任何错误,但字段始终为真。
谁能理解为什么这个请求失败了?
对于相同情况下的每个人,dnickless 提供的解决方案对我有效:
In case you've upgrade from an older version try running this:
db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
该行为通常是由 MongoDB 的更新安装引起的。 MongoDB 中内置了一个 "feature compatibility level" 开关,它允许更新到较新版本,但不会以 non-expected(好吧)的方式改变(部分)旧版本的行为.从 v3.4 升级到 v3.6 的 documentation 说明了该主题:
For deployments upgraded from 3.4 [the default feature compatibility level is] "3.4" until you setFeatureCompatibilityVersion to "3.6".
您可以通过 运行 以下命令解决此问题:
db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
我的数据库中有一个这样的项目架构:
Project: {
_id: ObjectID(),
// some data
dashboard_group: [
0: {
_id: ObjectID(),
dgr_nom: String,
dgr_enable
},
// others dashboards
]
}
对于每个项目,它只能启用一个仪表板。因此,在 'dashboard_group' 数组中添加新的仪表板(已启用)之前,我必须将所有其他仪表板 (dgr_enable) 设置为 false。
为了不必检索已启用仪表板的索引,我使用标识符 $[] 将所有仪表板设置为 false。
这是我的要求:
db.Project.update({
_id: my_pro_id
},
{
$set: {
"dashboard_group.$[].dgr_enable": false
}
}, function(err) {
});
但是 Mongo return 我这个错误信息:
"cannot use the part (dashboard_group of dashboard_group.$[].dgr_enable) to traverse the element ({dashboard_group: [ { _id: ObjectId('such id'), dgr_nom: "much noun", dgr_enable: true } ]})"
我已经尝试使用标识符 $,它没有 return 任何错误,但字段始终为真。
谁能理解为什么这个请求失败了?
对于相同情况下的每个人,dnickless 提供的解决方案对我有效:
In case you've upgrade from an older version try running this:
db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
该行为通常是由 MongoDB 的更新安装引起的。 MongoDB 中内置了一个 "feature compatibility level" 开关,它允许更新到较新版本,但不会以 non-expected(好吧)的方式改变(部分)旧版本的行为.从 v3.4 升级到 v3.6 的 documentation 说明了该主题:
For deployments upgraded from 3.4 [the default feature compatibility level is] "3.4" until you setFeatureCompatibilityVersion to "3.6".
您可以通过 运行 以下命令解决此问题:
db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )