我有以下聚合查询来对分组数据进行排序并将其返回到页面中:
Product.aggregate([
{ $match : { categories : category, brand : { $ne: null } }},
{ $group : { _id : '$brand', rating: { $max: '$rating' } } },
{ $sort : { rating : -1 } },
{ $skip : skip },
{ $limit : limit }], function(error, results){
....
})
这是为了找到具有输入类别和品牌的产品品牌,按品牌分组,并按品牌组中评价最高的产品对品牌组进行分类。这意味着使用跳过和限制参数进行分页。
当我对它进行分页时,我最终会偶尔重复结果(偶尔只有一个组,我没有注意到一个模式)。我知道数据不包含重复的产品,并且没有任何数据在调用之间发生变化,所以我在查询中做错了什么来获得这些结果?
答案 0 :(得分:3)
汇总问题与多个品牌评级相同的情况有关。在这种情况下,您无法保证它们将以相同的顺序出现。
解决方案是强制品牌排序等同评级案例:
{ $sort : { rating : -1, "_id" : 1 } }