是否有一个“ $ elemMatch”用于查询对象(而非数组)中的文本?

时间:2019-02-14 14:27:13

标签: python database mongodb

我有这个对象:

My case

我想将“ estado”的所有值都设置为“ false”

我尝试使用$elemMatch查找所有字段,并将其作为过滤器传递给$set方法,但是我认为$elemMatch仅适用于数组。

1 个答案:

答案 0 :(得分:0)

我认为您已经意识到了这一点,但是mongo虽然没有很好的运算符来处理具有任意键的嵌套对象,但是它确实具有出色的数组运算符,可以轻松(快速!)来更新和处理嵌套对象阵列文件。您甚至可以创建对数组中的键起作用的索引,以加快查询速度。

取决于您的应用程序代码在何种程度上取决于此数组结构,您可能希望首先将文档转换为数组,然后使用https://docs.mongodb.com/manual/reference/operator/update/positional-filtered/更新文档。要转换文档,您可以使用应用程序代码编写脚本,在js的mongo shell中编写脚本,或使用带有$ out的聚合管道将文档写入新集合。

如果无法更新架构,我认为您将不得不编写脚本来更改那些嵌套的文档字段。