我必须创建一个服务,该服务接受文本列表并在MongoDB中的文档中的嵌入式数组中搜索匹配项。例如, 我必须搜索以下文本列表:
["Tom", "Keanu", "Arnold"]
在以下集合中:
[{id: "123", title: "Movie 1", cast: [{id: 1, name: "Tom Hanks"}, {id: 2, name: "Actor 2"}]},
{id: "123", title: "Movie 1", cast: [{id: 1, name: "Keanu Reeves"}, {id: 2, name: "Actor 2"}]}
{id: "123", title: "Movie 1", cast: [{id: 1, name: "Arnold Schwarzenegger"}, {id: 2, name: "Actor 2"}]}]
在上面的文本中搜索应返回这三部电影。它要求我创建如下查询:
db.movies.find({cast.name: {$in: [/Tom/, /Keanu/, /Arnold/]}})
这是因为根据official doc,我们不能将$regex
与$in
一起使用。但是,我找不到将其转换为Spring Data Mongo查询的方法。
此Stackoverflow线程说明了如何使用正则表达式在嵌入式数组中搜索单个文本,但是我找不到关于使用Spring数据Mongo从嵌入式文档中的给定列表进行搜索的任何信息。任何帮助将不胜感激。
答案 0 :(得分:2)
您应该可以使用<h2 id='ip'>Test</h2>
和正则表达式条件来执行此操作。 $elemMatch equivalent in spring data mongodb在春季数据中对$elemMatch
进行了很好的讨论。像这样:
$elemMatch