Mongo模糊查询

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));

如果大家在使用中有问题可以私聊我。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值