mongodb - 如何在运行 MongoDB Atlas 全文搜索之前应用过滤器?
问题描述
根据有关Atlas Search的文档,它指出:
$search 必须是它出现的任何管道的第一阶段。
那么如果是这样的话,你如何应用 Mongo 过滤器。将这些过滤器应用于搜索的输出似乎非常违反直觉?
我们正在考虑使用 Mongodb 全文搜索作为 Algolia 的替代方案,但是这个限制似乎很奇怪
当前管道:
const pipeline = [
{
$search: {
text: {
query,
path: fields,
fuzzy: {
maxEdits: 1,
maxExpansions: 50,
},
},
},
},
{
$match: {
someField: 1,
},
},
];
解决方案
someField
在这种情况下,在 Atlas Search中将索引作为数字可能会更好,因为它支持使用范围运算符和复合来组合结果的数字类型。由于整个查询是在 Lucene 中运行的,它应该更快地返回结果。
const pipeline = [
{
$search: {
compound: {
should: {
text: {
query,
path: fields,
fuzzy: {
maxEdits: 1,
maxExpansions: 50,
},
},
},
filter: {
range: {
path: "someField",
lte: 1,
gte: 1
}
}
}
}
}
];
推荐阅读
- php - 使用 PDO 获取数据
- php - 选择所有列,但与 Laravel 中的数据库表不同
- python - python对终端提示动态回答是/否
- ios - 当调用 popToRootViewController 并设置 tabBarController selectedIndex 时,弹出的 VC 没有在同一个运行循环中调用 viewDidDisappear
- node.js - firebaseui-web:如何在 Node.js 后端识别用户?
- javascript - 谷歌未定义:如何检查是否在 React 中加载了谷歌地图脚本
- .net - ASP.NET MVC 5 中的表单/Windows/Passport 身份验证与身份验证过滤器
- windows - 使用 SVN 命令行的结帐操作
- node.js - 文件完全上传到磁盘时的 Multer 回调
- java - 如何使用硒验证从chrome浏览器下载的excel内容并处理下载的excel文件的受保护视图