我正在进行分组操作,计算每个组的条目数。这是代码:
db.feeds.group({key:{link:1, 'subtitle_detail.base':1}, reduce:function(curr,result){
result.count++
},
initial: {count: 0}
})
此代码返回一个数组。如何修改代码,以便数组按降序排序,按计数?
答案 0 :(得分:1)
如果使用aggregation framework而不是group(),则可以使用管道中的其他排序阶段轻松实现此目的:
db.feeds.aggregate([
{$group:{
_id:{link:"$link", base:"$subtitle_detail.base"},
count:{$sum:1}}},
{$sort:{count:1}}
])
答案 1 :(得分:0)
如果您有大量文档,sort 会耗尽内存。如果发生这种情况,您可以通过添加选项 allowDiskUse 来告诉管道在磁盘上而不是在内存中排序:
db.feeds.aggregate([
{$group:{
_id:{link:"$link", base:"$subtitle_detail.base"},
count:{$sum:1}}},
{$sort:{count:1}}
],
{allowDiskUse: True})