1. 程式人生 > >MongoDB 字串值長度條件查詢

MongoDB 字串值長度條件查詢

在實際專案中常常會有根據欄位值長度大小進行限制查詢,例如查詢商品名稱過長或過短的商品資訊,具體的實現方式可能有多種,在此記錄常見的兩種實現

使用 $where 查詢(效能稍遜一些)

//查詢商品名稱長度大於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 高)

//查詢商品名稱長度大於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:

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)