【发布时间】:2016-03-07 23:15:42
【问题描述】:
我有以下聚合查询来对分组数据进行排序并在页面中返回:
Product.aggregate([
{ $match : { categories : category, brand : { $ne: null } }},
{ $group : { _id : '$brand', rating: { $max: '$rating' } } },
{ $sort : { rating : -1 } },
{ $skip : skip },
{ $limit : limit }], function(error, results){
....
})
这意味着找到具有输入类别和品牌的产品的品牌,将它们按品牌分组,并按品牌组中评分最高的产品对品牌组进行排序。这意味着使用跳过和限制参数进行分页。
当我对它进行分页时,我最终会得到偶尔重复的结果(只是时不时地一组,我没有注意到一个模式)。我知道数据不包括重复的产品,并且在调用之间没有任何数据发生变化,那么我在查询中做错了什么以获得这些结果?
【问题讨论】:
-
好吧,既然你是按评级排序的,如果它在可能发生的查询之间发生变化。
-
编辑添加数据在查询之间没有变化,感谢@joao的建议。
-
嗯,您可以尝试将排序更改为 { $sort : { rating : -1, "_id": 1} } 看看效果如何?
-
你说得对,有几个产品的最高评分相同,而且我似乎不能依赖排序顺序,但按_id排序也解决了这个问题!如果你想写一个答案,我会接受。
标签: mongodb mongoose aggregation-framework