评论

小程序云开发模糊查询,实现数据库多字段的模糊搜索

小程序模糊搜索

最近做小程序云开发时,用到了一个数据库的模糊搜索功能,并且是要求多字段的模糊搜索。

网上也有一大堆资源,但是都是单个字段的搜索。如下图

上图只可以实现time字段的模糊搜索。但是我们如果相对数据表里的多个字段做模糊查询呢?该怎么办呢。

多字段模糊搜索

一,如我们的数据表里有以下数据,我们想同时模糊查询name和address字段


如我们搜索“周杰”可以看到我们查询到下面两条数据。

二,如我们搜索“编程”,可以搜索到下面数据


可以看到我们搜索到的两条数据,一个是name字段为 编程小石头,
一个是address字段里包含“编程“ 字样。

下面把代码贴给大家

    let key = "编程小石头";
    console.log("查询的内容", key)
    const db = wx.cloud.database();
    const _ = db.command
    db.collection('qcl').where(_.or([{
        name: db.RegExp({
          regexp: '.*' + key,
          options: 'i',
        })
      },
      {
        address: db.RegExp({
          regexp: '.*' + key,
          options: 'i',
        })
      }
    ])).get({
      success: res => {
        console.log(res)
      },
      fail: err => {
        console.log(err)
      }
    })

key就是我们要搜索的关键字。主要是用到了数据库查询的where,or,get方法。
代码都给大家贴出来来,如果对云开发和云数据库还不是很了解的同学可以去翻看下我以前写的文章。

点赞 20
收藏
评论

12 个评论

  • 天空
    天空
    2019-11-09

    很好。谢谢

    2019-11-09
    赞同 1
    回复
  • 李然
    李然
    2023-10-24

    感谢分享

    2023-10-24
    赞同
    回复
  • FWAN
    FWAN
    2022-02-17

    我想实现,查询某些关键字是否含在数据库记录中,找出所有的匹配项,也就是类似于检索的功能,本文提到的方法,把所有固定字段覆盖查询而实现模糊查询,固定字段有办法替换通配吗?

    2022-02-17
    赞同
    回复
  • 勿忘初心丶
    勿忘初心丶
    2021-12-11

    太棒了

    2021-12-11
    赞同
    回复
  • Zh
    Zh
    2021-08-31

    大佬牛呀

    2021-08-31
    赞同
    回复
  • MissionX℡¹³⁶⁰⁹⁸⁹⁹⁹¹²
    MissionX℡¹³⁶⁰⁹⁸⁹⁹⁹¹²
    2021-01-27

    你好,有没有完整的代码呢?麻烦私信我一个呗。46417896@qq.com

    2021-01-27
    赞同
    回复
  • 雪线
    雪线
    2020-06-08

    简洁,实用,非常好

    2020-06-08
    赞同
    回复
  • 2020-03-12

    请问,如果数据库内储存了字典,如

    course:{
      courseName:'数学',
      teacherName:'陈老师',
    }
    

    能不能搜索courseName?

    2020-03-12
    赞同
    回复 3
    • 国安
      国安
      2020-05-26
      我也在找,请问实现了吗?
      2020-05-26
      回复
    • 2020-05-26回复国安
      直接这样写就可以
      db.collection(‘’).where(
          course:{
              courseName: db.RegExp({
                regexp: '.*' + key,
                options: i,
              })
          }
      }
      2020-05-26
      1
      回复
    • 国安
      国安
      2020-05-26
      谢谢,
      我也找到了,这样写的
       .where({
              “course.courseName”: {
                $regex: key,
                $options: i,
              },
            })
      2020-05-26
      回复
  • 2019-11-21

    不错,学到了。 不知道为什么云开发的语法和官方mongodb有点不一样?

    2019-11-21
    赞同
    回复 2
    • 编程小石头
      编程小石头
      2019-11-21
      云开发其实就是node.js写的后台
      2019-11-21
      回复
    • 东西EWE
      东西EWE
      2019-12-11回复编程小石头
      请问,如果我要查询的内容在数据库的一个集合的object里面的话,上面代码中的name,address要怎么改?如下图,我要查询的内容在方框内
      2019-12-11
      1
      回复
  • 染柒
    染柒
    2019-11-14

    赞赞赞

    2019-11-14
    赞同
    回复

正在加载...

登录 后发表内容