1.先来看第一组数据
{
"bookType1" : "CLASS",
"bookType2" : "789",
"bookType3" : "MODEL",
"bookType4" : "B0001",
"fileName" : "书籍外观",
"fileType" : "image"
}
通过bookType4字段查询该数据的语句为:
db.getCollection('bookData').find({
"bookType4": "B0001"
})
2.再来看第二组数据,其中bookType4字段的值有多个,并且用逗号分隔
{
"bookType1" : "CLASS",
"bookType2" : "789",
"bookType3" : "MODEL",
"bookType4" : "B0001,B1112,B1113,B206K,B208P",
"fileName" : "书籍外观",
"fileType" : "image",
}
需要查询集合中bookType4字段中有B0001的数据的语句要怎么写呢?这里就需要用mongo模糊匹配相关语法,引入正则表达式
3.正则表达式
用过正则表达式的开发人员,应该都知道正则表达式是用来匹配一系列符合某个句法规则的字符串,一般用单个字符来描述,在mongo中使用 $regex 操作符来设置匹配字符串的正则表达式。
用正则表达式查找上述数据中bookType4字段中有B001的数据集合:
db.getCollection('bookData').find({"bookType4" : { $regex:/B1112/ }})
在java项目中的实现的关键代码为:
Pattern pattern = Pattern.compile("^.*" + bookType4 + ".*$", Pattern.CASE_INSENSITIVE);
query.addCriteria(Criteria.where("bookType4").regex(pattern));
如果大家在使用中有问题可以私聊我。