我们的用户架构是这样的......
const docSchema = new mongoose.Schema({
userType: {
type: String,
enum: [
'customer',
'driver'
]
},
userId: {
type: String,
refPath: 'userType'
},
device: {
type: String,
enum: [
'Android',
'IOS'
]
},
appVersion: {
type: String,
default: ''
},
deviceId: {
type: String,
default: ''
},
connected: {
type: Date,
default: ''
},
disconnected: {
type: Date,
default: ''
}
}, {
timestamps: true
});
现在,我们必须统计用户使用连接和断开连接的总在线时间, 任何人都可以帮助我们如何实现这一目标?
最佳答案
从您的问题来看,似乎对于每个 session (即一次连接和断开连接),您都在 DocSchema
中为用户创建一个文档 [让我们调用模型 DocSchema
]。您想知道用户的总时间。您可以使用聚合
。
这是一个聚合
示例,用于查找 userId searchKey
的总时间
Schema2.aggregate({
$match: {
userId: searchKey,
$project: {
diff: {
$subtract: ['$disconnected', '$connected']
}
},
$group: {
_id: 'justAGroupName',
total: {
$sum: '$diff'
}
}
}
});
有关更多信息,请查看 mongodb aggregation doc
关于node.js - 如何计算 Mongoose 从开始日期到结束日期的总时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57533278/