根据文档中关于 阿特拉斯搜索,它规定。
$search必须是它出现的任何管道的第一个阶段。
如果是这样的话,你如何应用Mongo过滤器呢?很 在搜索的输出上应用这些过滤器是否有悖常理?
我们正在考虑使用Mongodb全文搜索作为Algolia的替代方案,但这个限制似乎很奇怪"■▄。
目前正在进行中。
const pipeline = [
{
$search: {
text: {
query,
path: fields,
fuzzy: {
maxEdits: 1,
maxExpansions: 50,
},
},
},
},
{
$match: {
someField: 1,
},
},
];
在这种情况下,可能更好的是索引 someField
在Atlas搜索中 为数,因为它支持数字类型 使用范围运算符 和 复式 来合并结果。 由于整个查询是在Lucene中运行的,所以返回结果的速度应该更快。
const pipeline = [
{
$search: {
compound: {
should: {
text: {
query,
path: fields,
fuzzy: {
maxEdits: 1,
maxExpansions: 50,
},
},
},
filter: {
range: {
path: "someField",
lte: 1,
gte: 1
}
}
}
}
}
];