Mongodb Mongo查询在地图中搜索字符串

Mongodb Mongo查询在地图中搜索字符串,mongodb,mongodb-query,spring-data-mongodb,Mongodb,Mongodb Query,Spring Data Mongodb,我已通过使用以下查询在dto中搜索字符串类型名称 @RestResource(path = "searchByName") @Query("{'$and': [{'companyId': ?0}, {name : {$regex : ?1, $options: 'i'}}]}") Page<Shop> findByName(String companyId, String name, Pageable pageable); 新的DTO cla

我已通过使用以下查询在dto中搜索字符串类型名称

@RestResource(path = "searchByName")
@Query("{'$and': [{'companyId': ?0}, {name : {$regex : ?1, $options: 'i'}}]}")
Page<Shop> findByName(String companyId, String name, Pageable pageable);
新的DTO

class Shop {
    private String id;
    private String companyId
    private Map<String, String> names;
}

所以,如果客户机给出一个类似“sho”的文本,它应该在映射值内搜索,并返回整个dto。如何更改查询以实现此目的?

我认为
名称
应该是一个
列表
,其中
名称
POJO具有属性
语言
,以及
名称
。这将以
名称:[{language:“EN”,name:“Shop”},{….},…]的形式存储在集合的文档中。
。然后您可以使用这些功能轻松地进行查询。谢谢@prasad\ux,我将尝试这种方法。顺便说一句,我们不能像上面那样在地图中查询值吗?你可以。首先使用
$objectToArray
将地图数据,即
名称
子文档转换为数组。然后迭代数组的值并使用正则表达式进行匹配,以搜索特定的子字符串,如“shop…”。
class Shop {
    private String id;
    private String companyId
    private Map<String, String> names;
}
{
    "EN": "Shop1",
    "SW": "affär"
}