让我们说我有一个简单的文档结构,例如:
{
"item": {
"name": "Skittles",
"category": "Candies & Snacks"
}
}
在我的搜索页面上,每当用户搜索产品名称时,我都希望有一个按类别的过滤器选项。
由于类别可能很多(例如50种类型),因此无法在侧边栏上显示搜索结果旁边的所有复选框。我只想在结果中显示与之相关的产品。因此,如果搜索结果中的所有产品都没有类别,则不要显示该类别选项。
现在,将按名称本身对项目搜索进行分页。我在一个页面中只显示30个项目。而且我们的数据库中有成千上万的项目。
我可以搜索和检索所有页面中的所有项目,然后解析类别。但是,如果我在一页中检索成千上万的项目,那将真的很慢。
有没有优化此查询的方法?
答案 0 :(得分:0)
您可以根据工作流程使用不同的方法,并查看哪种方法最适合您的情况。
[{$group: { _id: "$item.category" }}]
最后,根据您选择的方法和过滤器请求的流入,您可能需要考虑indexing一些字段
P.S。您对聚合的工作方式是正确的,除非您将匹配过滤器作为第一阶段,否则它将获取所有文档,然后应用于下一阶段。