MongoDB 聚合函数
🏷️ MongoDB
count()
查询并返回匹配文档的个数bash> db.phones.count() 316229 > db.phones.count({'components.number': {$gt: 5599999}}) 172471
distinct()
返回每个匹配的值(不是整个文档)bash> db.phones.distinct('components.number', {'components.number': {$lt: 5550005}})
group()
类似于 SQL 中的GROUP BY
bash> db.phones.group({ ... initial:{count: 0 }, ... reduce:function(phone, output) { output.count++; }, ... cond: {'components.number': {$gt: 5599999}}, ... key: {'components.area' : true} ... })
下面两个例子用来展示 group 函数的灵活性。
3.1. 使用
group()
调用来重现count()
函数的结果> db.phones.group({ ... initial:{count: 0 }, ... reduce:function(phone, output) { output.count++; }, ... cond: {'components.number': {$gt: 5599999}} ... }) > db.phones.count({'components.number': {$gt: 5599999}}) 172471 ```
3.2. 使用
group()
调用来重现distinct()
函数的结果bash> db.phones.group({ ... initial: { prefixes: {} }, ... reduce: function(phone, output) { ... output.prefixes = 1; ... }, ... finalize: function (out) { ... var ary = ; ... for(var p in out.prefixes) { ary.push(parseInt(p)); } ... out.prefixes = ary; ... } ... }).prefixes > db.phones.distinct('components.prefix')