查询子文档数组作为顶级文档的性能

问题描述

我收集了一系列看起来像这样的产品:

{ 
  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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...