多字段 条件模糊搜索 基于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配置注释片段
暂无评论信息
- 相关文章
- 文章推荐
-
git:如何管理本机的多个ssh密钥(多个远程仓库账号)
如果我们电脑上已经存在了一个ssh key,那么我们需要在我们电脑上生成第二个你想在本电脑上使用的id_rsa,使用命令:ssh-keygen -t rsa -C "你的github账号"。
-
眼镜试戴的装饰效果
开发眼镜类产品的时候需要使用试戴的功能,这里就有你需要的学习资料哦!
-
淘宝 NPM 镜像站喊你切换新域名啦
淘宝 NPM 镜像站(npm.taobao.org)自 2014 年 正式对外服务,一开始只是想简单地做 NPM 的中国镜像站点,回馈国内前端社区,不知不觉竟然一直运行到现在。当年参考 Ruby Gems 淘宝镜像 的方式,跟阿里开源组织申请了 taobao.org 的二级域名,镜像站点名称也自然而然地取名为 淘宝 NPM 镜像站 (下称 CNPM)。
-
半导体短缺即将结束?分析师:如果没有 1 美元芯片会影响更多
德勤咨询(Deloitte Consulting)的芯片分析师认为,随着芯片行业资本支出的增加,需求度较高的工厂已经开工,预示着短缺情况即将结束。
- 点击排行
- 站长推荐
- 猜你喜欢
- 网站信息
- 站内问答:12篇
- 站内文章:207篇
- 建站时间:已运行917天
- 备案号: 浙ICP备2022018799号
- 语言:
English(USA)
French(FR)
Chinese(ZH)
无数据