在实际项目中常常会有根据字段值长度大小进行限制查询,例如查询商品名称过长或过短的商品信息,具体的实现方式可能有多种,在此记录常见的两种实现
使用 $where 查询(性能稍逊一些)
1 2 3 4 5 | //查询商品名称长度大于25个字符的商品 db.item.find({item_name:{$exists: true },$where: "(this.item_name.length > 25)" }).limit(5) //查询商品名称长度小于5个字符的商品 db.item.find({$where: "this.item_name.length < 5" }).limit(5) |
使用正则表达式查询(性能比$where 高)
1 2 3 4 5 | //查询商品名称长度大于25个字符的商品 db.item.find({ "item_name" : { "$exists" : true , "$regex" : /^.{25,}$/}}).limit(5) //查询商品名称长度小于5个字符的商品 db.item.find({ "item_name" : { "$regex" : /^.{0,5}$/}}).limit(5) |
Java 使用 Spring data mongodb:
1 2 3 4 5 | String pattern = String.format( "^.{%s,}$" , overlength); Criteria criteria = Criteria.where( "item_name" ).regex(pattern, "m" ); Query query = new Query(criteria); mongoTemplate.find(query, Item. class ) |
参考地址:https://docs.mongodb.com/manual/reference/operator/query/regex/
原文转自: http://www.xuexiyuan.cn/article/detail/74.html