如何使用mongodb';s聚合或映射/减少,计算每天、每周和每月都有记录的用户比例
每个MongoDB文档如下所示(删除与此问题无关的属性):如何使用mongodb';s聚合或映射/减少,计算每天、每周和每月都有记录的用户比例,mongodb,Mongodb,每个MongoDB文档如下所示(删除与此问题无关的属性): 试图找出如何通过聚合查询或映射/减少来计算每天、每周和每月都有记录的用户的分数。我不认为您可以一次轻松计算分数,但您当然可以聚合每个括号(天、周或月)中的用户数尽管您必须运行聚合三次 首先,今天: db.so.aggregate( [ { $group: { _id: { y: { $year: '$created' }, m: { $month: '$creat
试图找出如何通过聚合查询或映射/减少来计算每天、每周和每月都有记录的用户的分数。我不认为您可以一次轻松计算分数,但您当然可以聚合每个括号(天、周或月)中的用户数尽管您必须运行聚合三次 首先,今天:
db.so.aggregate( [
{ $group: {
_id: {
y: { $year: '$created' },
m: { $month: '$created' },
d: { $dayOfMonth: '$created' }
},
count: { $sum: 1 }
} }
] );
第二,本月:
db.so.aggregate( [
{ $group: {
_id: {
y: { $year: '$created' },
m: { $month: '$created' },
},
count: { $sum: 1 }
} }
] );
最后,今年:
db.so.aggregate( [
{ $group: {
_id: { $year: '$created' },
count: { $sum: 1 }
} }
] );
将其与集合的不同用户计数相结合:
db.so.aggregate( [
{ $group: {
_id: null,
count: { $sum: 1 }
} }
] );
然后你也可以计算分数
db.so.aggregate( [
{ $group: {
_id: null,
count: { $sum: 1 }
} }
] );