多字段 条件模糊搜索 基于NodeJS+mongoose
分类专栏: Node
简介 通过mongoose的多字段,多条件进行的模糊搜索
<p><span class="ql-size-large" style="color:rgb(77, 77, 77);">多字段</span><a href="https://so.csdn.net/so/search?q=%E6%A8%A1%E7%B3%8A%E6%90%9C%E7%B4%A2&spm=1001.2101.3001.7020" rel="noopener noreferrer" target="_blank" class="ql-size-large" style="color:rgb(252, 85, 49);">模糊搜索</a><span class="ql-size-large" style="color:rgb(77, 77, 77);">,比如数据有 书名和作者。最简单的搜索是搜索书名或作者的关键字,但是想同时</span></p><p><br></p><p><span class="ql-size-large" style="color:rgb(77, 77, 77);">搜索书名和作者怎么办呢,这里用到了mongoose的操作符$all</span></p><p><br></p><p><span class="ql-size-large" style="color:rgb(77, 77, 77);">这里key是</span><a href="https://so.csdn.net/so/search?q=%E6%90%9C%E7%B4%A2%E6%A1%86&spm=1001.2101.3001.7020" rel="noopener noreferrer" target="_blank" class="ql-size-large" style="color:rgb(252, 85, 49);">搜索框</a><span class="ql-size-large" style="color:rgb(77, 77, 77);">中的值,多条件搜索时以空格分隔,keys是存储了关键字段值得数组key进来后先</span></p><p><br></p><p><span class="ql-size-large" style="color:rgb(77, 77, 77);">用</span><a href="https://so.csdn.net/so/search?q=split&spm=1001.2101.3001.7020" rel="noopener noreferrer" target="_blank" class="ql-size-large" style="color:rgb(252, 85, 49);">split</a><span class="ql-size-large" style="color:rgb(77, 77, 77);">()已空格分隔成数组,数组里每个值都对应一个条件,有几个值就循环几次 把条件push进</span></p><p><br></p><p><span class="ql-size-large" style="color:rgb(77, 77, 77);">条件数组arrKey,然后给query.$and = arrKey,这样用qurey去查询就可以了</span></p><p><br></p><pre class="ql-syntax" spellcheck="false"> if (params.key) {
let arr = []
let arrKey = []
// key含空格则分割关键词进行搜索
if (params.key.indexOf(' ') !== -1) {
arr = params.key.split(' ')
arr.forEach(akey => {
arrKey.push({
keys: {
$regex: akey,
$options: 'gi'
}
})
})
} else {
arrKey = [{
keys: {
$regex: params.key,
$options: 'gi'
}
}]
}
query.$and = arrKey
}
</pre><p><br></p><p><span class="ql-size-large">最后根据query查询数据:</span></p><p><br></p><p><span class="ql-size-large">let book = await Book.find(query)</span></p><p><br></p>
分享到:
转载:
https://blog.csdn.net/Xilingshidai/article/details/89602073
喜欢 0
收藏
上一篇:
vscode配置注释片段
暂无评论信息
- 相关文章
- 文章推荐
-
Docker 常用命令
docker目前代替虚拟机使用的一个容器,灵活好用。
-
docker搭建jenkins环境执行宿主机的docker无权限的解决方法
初次搭建jenkins持续集成工具的时候,在运行项目阶段出现 permission denied的情况
-
HTML 面试知识点总结
本部分主要是笔者在复习 HTML 相关知识和一些相关面试题时所做的笔记,如果出现错误,希望大家指出!
-
淘宝 NPM 镜像站喊你切换新域名啦
淘宝 NPM 镜像站(npm.taobao.org)自 2014 年 正式对外服务,一开始只是想简单地做 NPM 的中国镜像站点,回馈国内前端社区,不知不觉竟然一直运行到现在。当年参考 Ruby Gems 淘宝镜像 的方式,跟阿里开源组织申请了 taobao.org 的二级域名,镜像站点名称也自然而然地取名为 淘宝 NPM 镜像站 (下称 CNPM)。
- 点击排行
- 站长推荐
- 猜你喜欢
- 美国芯片大涨价且难以交货,消息称欧美部分电信客户已转单联发科、瑞昱等
- JavaScript中的文本字符串的转义和反转义的实现&
- 英国军方 Twitter 和 YouTube 账号被黑:为 NFT 做起广告,现已恢复
- MYSQL 相关查询语法
- 使用css自定义input单选框样式
- js中加载script标签监听失败和成功的回调
- js 模拟放大镜的开发
- nuxtJs框架中判断是pc端还是移动端,分别跳转不同页面
- ModuleNotFoundError: No module named flask._compat
- Dockerfile部署执行脚本的时候,yarn报The engine “node“ is incompatible with this module.
- 网站信息
- 站内问答:12篇
- 站内文章:212篇
- 建站时间:已运行1107天
- 备案号: 浙ICP备2022018799号
- 语言:
English(USA)
French(FR)
Chinese(ZH)
无数据