我想为以下文档中的嵌套数组对象基于_id更新地址:
{
"_id": "fb369348-341b-11e9-9e05-03b09392591c",
"user": [
{
"_id": "fb369349-341b-11e9-9e05-03b09392591c",
"name": "test1",
"address": [
{
"_id": "fb369350-341b-11e9-9e05-03b09392591c",
"loc1": "place1, chennai, India",
"type": "home"
},
{
"_id": "fb369351-341b-11e9-9e05-03b09392591c",
"loc1": "palce2, chennai, India",
"type": "work"
}
]
},
{},
{},
{}
]
}
我在mongodb中使用以下查询,它的工作正常,并且记录正在更新:
db.user_details.update(
{ "user.address._id": 'fb369350-341b-11e9-9e05-03b09392591c' },
{ $set: {
"user.$.address.$[i].loc1": "11111111111",
"user.$.address.$[i].type": "fdfdfddfdfdfdfdfdfdfdf"
}
},
{ arrayFilters: [{ "i._id": 'fb369350-341b-11e9-9e05-03b09392591c'}] }
)
但是当我尝试在节点js中使用以上查询时,出现错误:
TypeError:无法读取未定义的属性'castForQuery'
有人可以帮助我理解为什么我遇到castForQuery错误,_id是uuid并另存为字符串类型吗?
答案 0 :(得分:0)
我遇到了同样的问题。就我而言,一切都正确,但我的猫鼬版本不合适。
我通过更新Mongoose版本解决了我的问题。以前我使用的是mongoose@5.0.15
。通过以下命令,我升级了猫鼬版本。
npm install mongoose@5.5.11
之后,它起作用了。