我有这个对象:
我想将“ estado”的所有值都设置为“ false”
我尝试使用$elemMatch
查找所有字段,并将其作为过滤器传递给$set
方法,但是我认为$elemMatch
仅适用于数组。
答案 0 :(得分:0)
我认为您已经意识到了这一点,但是mongo虽然没有很好的运算符来处理具有任意键的嵌套对象,但是它确实具有出色的数组运算符,可以轻松(快速!)来更新和处理嵌套对象阵列文件。您甚至可以创建对数组中的键起作用的索引,以加快查询速度。
取决于您的应用程序代码在何种程度上取决于此数组结构,您可能希望首先将文档转换为数组,然后使用https://docs.mongodb.com/manual/reference/operator/update/positional-filtered/更新文档。要转换文档,您可以使用应用程序代码编写脚本,在js的mongo shell中编写脚本,或使用带有$ out的聚合管道将文档写入新集合。
如果无法更新架构,我认为您将不得不编写脚本来更改那些嵌套的文档字段。