从所有 mongodb 个文档中获取结果

Get result from all mongodb documents

我有一个文件

[
    {
      "contentId": "62738f2fba6155003dd1e25d",
      "tags": [
        "spring boot",
        "spring jpa"
      ]
      
    },
    {
      "contentId": "62738f98ba6155003dd1e25e",
  
      "tags": [
        "spring",
        "java"
      ]
    }
]

我需要在 spring jpa 中编写一个 @Query 表达式,以获得带有与正则表达式 '.spr.' 匹配的标签的结果。因此,预期结果将是一组所有匹配的标签。

[spring, spring 开机, spring jpa]

我试过这样写

    @Query(value = "{tags : { '$regex' : ?0 , $options: 'i'}}", fields = "{tags : 1,_id : 0}")
Set<String> findByTags(String tag);

但这给了我所有匹配的标签文档。

请帮我获取一组匹配的文本。

您可以使用聚合框架中的 $filter 来仅获取匹配的数组元素。

playground

db.collection.aggregate([
  {
    $project: {
      d: {
        $filter: {
          input: "$tags",
          as: "num",
          cond: {
            $regexMatch: {
              input: "$$num",
              regex: ".*spr.*"
            }
          }
        }
      }
    }
  }
])