问题描述
我收集了一系列看起来像这样的产品:
{
name: "necktie",reviews: [{ rating: 88 },{ rating: 66 }]
},{
name: "underwear",reviews: [{ rating: 23 },{ rating: 99 }]
}
就文件和评论的数量而言,该收藏非常庞大。我想构造一个查询来浏览所有产品中最高评分的查询。我相信我需要使用放松来做到这一点:
db.products.aggregate([
{$match: {}},{$unwind: '$reviews'},{$match: {'reviews.rating': {$gte: 75}}},{$sort: { 'reviews.rating': 1 }},{$limit: 5}
]);
reviews.rating有一个索引。我的问题是关于此查询的性能:
- $ unwind阶段是否一定要构建一个庞大的中间文档集,其中包含整个馆藏中所有未取消的评论?说明计划似乎仅提供有关$ match阶段的信息。从理论上讲,您可以提前进行后续阶段(即带限制的索引排序),以确定要实际检索的文档。换句话说,我能否使该查询以与索引查找相同的时间/空间复杂度运行,在该索引查找中,评论是文档级别的对象(例如,实际上在架构中未展开)?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)