我正在尝试建立一个MongoDB查询,在其中我可以搜索一列对象,这些对象都包含多个嵌套的对象数组,其中一个对象的最低级别的属性包含一部分字符串。
这是这些对象的一般结构:{
"name": "Foo"
"structure": {
"configs":[
{
"combinations": [
{
"title": "item1"
},
{
"title": "item2"
}
]
},
{
"combinations": [
{
"title": "item3"
},
{
"title": "item4"
}
]
}
]
}
}
现在,当我搜索“ item1”或仅搜索“ 1”时,我希望返回该示例对象,因为第一个combinations数组包含一个标题为item1的对象。由于我是在Spring Boot中构建应用程序的,因此通常可以通过存储库类中通常的高级findAllByPropertyMatching(String searchTerm)轻松处理查询。由于它的复杂性,在这种情况下这是行不通的,我真的在如何解决这个问题上苦苦挣扎。
我尝试了自定义查询...@Query(value = "{'structure.configs.$[].combination.$[].title': {$regex : ?0, $options: 'i'}}")
public List findAllByStructuregMatchesRegex(String query);
...但是显然有多个问题。
由于数据是从外部来源加载的,因此我无法更改基础数据结构。我也不能缓存所有项目并使用Java逻辑对其进行过滤,因为数据集太大了。
有人能指出我正确的方向吗?非常感谢您的帮助,非常感谢!