好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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个元素)

 

模糊查询

精准查询

?

1

2

3

//Mongodb数据库表

const systemUser = require( 'models/user' );

systemUser.find({ name : 'xiaoming' }). exec ( function (err,rs){}

多条件模糊查询

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

//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){}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。

原文链接:https://segmentfault.com/a/1190000020240551

查看更多关于MongoDB多条件模糊查询示例代码的详细内容...

  阅读:31次