我想使用mongo db创建spring boot存储库查询。我的集合名称为qualification
{
"code": "DEVELOPER",
"description": "Software Developer",
"status": "ACTIVE",
"listItems": [
{
"itemId": "JAVA",
"item": "Java"
},
{
"itemId": "PYTHON",
"item": "Python"
},
{
"itemId": "PHP",
"item": "Php"
},
{
"itemId": "JAVASCRIPT",
"item": "Javascript"
}
],
"returncode": "00000",
"message": "Data Available"
}
我尝试了以下查询来获取与该模式匹配的任何内容ja,
db.employee.aggregate([{$match:{"code" : "DEVELOPER"}},
{$project : {listItems:{$filter:{
input: "$listItems",
as: "listItems",
cond: { $regexMatch:{
input:"$$listItems.item",
regex: /ja/i} }
}}}}])
我得到的确切答案是,
{
"code": "DEVELOPER",
"description": "Software Developer",
"status": "ACTIVE",
"listItems": [
{
"itemId": "JAVA",
"item": "Java"
},
{
"itemId": "JAVASCRIPT",
"item": "Javascript"
}
],
"returncode": "00000",
"message": "Data Available"
}
但是当我使用mongotemplate在Java中尝试并得到NULL指针异常并且没有任何输出的时候
public List<ListValue> findAllByCode(String code,String item) {
Query query = new Query();
query.addCriteria(Criteria.where("code").is(code).and("listItems.item").regex("^" + item + "$", "i"));
return mongoTemplate.find(query, ListValue.class);
}
regex("^" + item + "$", "i")
表示完全匹配(不区分大小写)
将.regex(".*" + item + ".*", "i")
用于包含(不区分大小写)item
模式
query.addCriteria(Criteria.where("code").is(code).and("listItems.item").regex(".*" + item + ".*", "i");
查找详细信息here