更新 MongoDb 集合中的文档,但没有完全匹配查询过滤器

Updating documents in MongoDb collection without an exact full match of the query filters

我正在尝试更新集合中的文档,根据 mongodb 语法,对于某些更新功能,我这样做:

Collection.updateMany(
    {
        filter1: 'filter1-val',
        filter2: 'filter2-val',
        filter3: 'filter3-val'
                    
    },
    { $set: { filed: 'value' } }
)

和 mongodb 对匹配查询的文档执行给定的更新操作。但是,它只会更新与查询中的每个过滤器匹配的文档。我的问题,我想知道的是,有没有一种方法可以对文档执行更新,只要它们至少匹配查询中的一个过滤器,而不是每个过滤器?所以基本上,一种宽松匹配的形式,只要文档满足其中一个过滤器,就应该更新它。

提前致谢;非常感谢任何帮助。

您可以在搜索条件中使用 $expr and $or

这里有一个mongo playground供大家参考。

您可以使用 $or 运算符。

Collection.updateMany(
  {
    $or: [
      { filter1: 'filter1-val' },
      { filter2: 'filter2-val' },
      { filter3: 'filter3-val' }
    ]
  },
  { $set: { filed: 'value' } }
);