Mongodb Mongo查询在地图中搜索字符串
我已通过使用以下查询在dto中搜索字符串类型名称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
@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"
}