MongoDB多条件模糊查询示例代码
前言
模糊查询是数据库的基本操作之一,实现对给定的字符串是否与指定的模式进行匹配。如果字符完全匹配,可以用=等号表示,如果部分匹配可认为是一种模糊查询。在关系型数据中,通过SQL使用like ‘%fens%'的语法。那么在mongodb中我们应该如何实现模糊查询的效果呢。
查询条件
  
    
      关键字 
      说明 
    
  
  
    
      $or
      或关系
    
    
      $nor
      或关系取反
    
    
      $gt
      大于
    
    
      $gte
      大于等于
    
    
      $lt
      小于
    
    
      $lte
      小于等于
    
    
      $ne
      不等于
    
    
      $in
      在多个值范围内
    
    
      $nin
      不在多个值范围内
    
    
      $all
      匹配数组中多个值
    
    
      $regex
      正则,用于模糊查询
    
    
      $size
      匹配数组大小
    
    
      $maxDistance
      范围查询,距离(基于LBS)
    
    
      $mod
      取模运算
    
    
      $near
      邻域查询,查询附近的位置(基于LBS)
    
    
      $exists
      字段是否存在
    
    
      $elemMatch
      匹配内数组内的元素
    
    
      $within
      范围查询(基于LBS)
    
    
      $box
      范围查询,矩形范围
    
    
      $center
      范围查询,圆形范围
    
    
      $centerSphere
      范围查询,球形范围
    
    
      $slice
      查询字段集合中的元素(比如从第几个之后,第N到第M个元素)
    
  
模糊查询
精准查询
//Mongodb数据库表
const systemUser = require('../../models/user'); 
systemUser.find({name:'xiaoming'}).exec(function(err,rs){}
多条件模糊查询
//Mongodb数据库表
const systemUser = require('../../models/user');
//前端传入的要查询的关键字
var name = req.query.name;
var page = req.query.page || 1; //当前页数
var limitNums = 10; //指定每一页查询的条数
page = parseInt(page);
var skipNums = (page - 1) * limitNums; //跳过指定数量
//正则匹配 i忽略大小写
var reg = new RegExp(name, "i");
var _filter = {
 //多字段匹配
 $or: [
  {name: {$regex: reg}},
  {description: {$regex: reg}},
  {owner: {$regex: reg}},
 ]
}
systemUser.find(_filter).
//跳过指定数量的数据
skip(skipNums).
//指定从MongoDB中读取的记录条数。
limit(limitNums).
sort({createTime:-1}).
exec(function(err,rs){}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
下一篇:Mongodb的oplog详解