最近做小程序云开发时,用到了一个数据库的模糊搜索功能,并且是要求多字段的模糊搜索。
网上也有一大堆资源,但是都是单个字段的搜索。如下图
上图只可以实现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方法。
代码都给大家贴出来来,如果对云开发和云数据库还不是很了解的同学可以去翻看下我以前写的文章。
很好。谢谢
感谢分享
我想实现,查询某些关键字是否含在数据库记录中,找出所有的匹配项,也就是类似于检索的功能,本文提到的方法,把所有固定字段覆盖查询而实现模糊查询,固定字段有办法替换通配吗?
太棒了
大佬牛呀
你好,有没有完整的代码呢?麻烦私信我一个呗。46417896@qq.com
简洁,实用,非常好
请问,如果数据库内储存了字典,如
course:{ courseName:'数学', teacherName:'陈老师', }
能不能搜索courseName?
db.collection(‘’).where(
course:{
courseName: db.RegExp({
regexp: '.*' + key,
options: i,
})
}
}
我也找到了,这样写的
.where({
“course.courseName”: {
$regex: key,
$options: i,
},
})
不错,学到了。 不知道为什么云开发的语法和官方mongodb有点不一样?
赞赞赞