【发布时间】:2018-09-02 00:03:52
【问题描述】:
我有一个看起来像这样的模型:
型号:
createdAt: {
type: String,
default: Moment(new Date()).format('YYYY-MM-DD')
},
loginTrack: [
{
user_id: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Users',
}
}
有一些数据:
[
{
_id: ...,
createdAt : '2018-03-22',
loginTrack: [
{user_id : 1,...}
{user_id : 1, ...},
{user_id : 2, ...}
]
},
{
_id: ...,
createdAt : '2018-03-23',
loginTrack : [
{user_id : 4, ...},
{user_id : 1, ...}
]
},
{
_id : ...,
createdAt: '2018-03-24',
loginTrack : [
{user_id : 2, ...}
]
]
我想知道每天唯一新会话总数的百分比,这意味着计算前一天的会话数,mongodb 可以吗?
这样的输出
[{
date : '2018-03-22',
newSessionsAvg : 2 (unique sessions only : maybe it's 100 % ?)
},
{
date : '2018-03-23',
newSessionAvg: 100
},
{
date : '2018-03-24',
newSessionAvg : 25 (1/ (2+2) * 100)
}]
是否可以使用聚合/项目/组?
这是我尝试过的:
AnalyticsModel.aggregate([
{
"$project" : {
users: {$size: "$loginTrack"},
"createdAt" : 1,
"_id": 0
}},
{
"$group": {
"_id": "$createdAt",
"count": { "$sum": 1 }
}
}
输出如下所示:
[{"_id":"2018-03-22","count":3},{"_id":"2018-03-21","count":2}]
谢谢
【问题讨论】:
-
到目前为止你绑了什么?
-
我编辑了问题:)
标签: javascript node.js mongodb mongoose aggregation-framework