我有一个推文集合,我想找到一个在集合中发推文最多的用户 ID。所以我group
首先要做的是sort
:
db.tweets.group( { key: {"user.id": 1}, reduce: function (curr, result) { result.total += 1; }, initial: {total: 0} }).sort({total: -1})
但是,mongo shell 抱怨说:
TypeError: db.tweets.group({key:{'user.id':1}, reduce:function (curr, result) {result.total += 1;}, initial:{total:0}}).sort({total:-1}) is not a function (shell):1
我引用了mongodb doc,我认为我的语法sort
应该是正确的?另外, 和 有什么区别aggregate
?我想做的事情会更好地完成aggregate
吗?
我在这里有点困惑,因为没有sort
,该命令db.tweets.group( { key: {"user.id": 1}, reduce: function (curr, result) { result.total += 1; }, initial: {total: 0} })
给了我这样的东西:{
"user.id" : 1477500938,
"total" : 1
}
这看起来是正确的,这也是可运行的:db.tweets.group( { key: {"user.id": 1}, reduce: function (curr, result) { result.total += 1; }, initial: {total: 0} }).sort()
只是它似乎既不是 sort by user.id
or total
。