如何解决更新路径“ packages$ [pkg10] .items”会在“ packages”处产生冲突
我正在尝试在mongo中进行以下更新,并出现错误:
db.xyz.updateOne(
{ "xyzId": 1 },{
$push: { "packages": { "id": 11 } },$pull: { "packages.$[pkg10].items": { "id": 1000 } }
},{
arrayFilters: [{ "pkg10.id": 1 }]
}
)
错误:
{
"message" : "Updating the path 'packages.$[pkg10].items' would create a conflict at 'packages'","stack" : "script:1:11","name" : "WriteError","code" : 40,"index" : 0
}
我的问题是为什么这不能先按顺序添加一个包装,然后再从另一个指定的包装中取出物品? 我怎么知道哪种更新会导致这种错误。
类似的问题,(但没有帮助):Updating the path 'x' would create a conflict at 'x'
解决方法
我怎么知道哪种更新会导致这种类型的错误
如果您尝试在同一更新操作中update the same path i.e packages
。
在这里,您在pull
上有push
和packages
。因此发生错误。如果必须更新另一个path
或field
,则可以在同一更新操作中添加它。
为什么它不能先按顺序添加一个包装,然后再从另一个指定的包装中移除物品
这是一项限制/功能缺失。这是mongo db中的方式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。