【发布时间】:2021-11-21 13:19:32
【问题描述】:
我必须使用 MongoDB Atlas 中的搜索索引以及普通浏览功能来实现搜索。这包括过滤、匹配、排序、跳过、限制(分页)。我制作了一个聚合管道来实现这一切。 首先,我将搜索查询推送到我的管道,然后匹配、排序、然后跳过,最后是限制查询。
事情是这样的:
query = [];
query.push({
$search: {
index: 'default'
text: {
query: searchQuery
path: { }
}
}
});
query.push({
$sort: sort,
});
query.push({
$match: {
type: match
},
query.push({
$skip: skip
});
query.push({
$limit: perPage
});
let documents = await collection.aggregate(query);
到目前为止我得到的结果是正确的。但是,对于分页,我还想获取文档的总数。计数必须考虑到“匹配”和“搜索查询”(如果有)。
我试过$facet 但它给出了错误$_internalSearchMongotRemote is not allowed to be used in a $facet stage
【问题讨论】:
-
嗨,你看到我之前的回答@SunAns了吗?
标签: node.js mongodb express aggregation-framework mongodb-atlas-search