You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
1.2 KiB
79 lines
1.2 KiB
1 year ago
|
/**
|
||
|
* 数据库操作
|
||
|
*/
|
||
|
const BaseMod = require('../../base');
|
||
|
const dbName = require("./config");
|
||
|
|
||
|
class Dao extends BaseMod {
|
||
|
|
||
|
constructor() {
|
||
|
super()
|
||
|
this.tablePrefix = false; // 不使用表前缀
|
||
|
}
|
||
|
|
||
|
async group(data) {
|
||
|
let {
|
||
|
whereJson
|
||
|
} = data;
|
||
|
const dbRes = await this.aggregate(dbName.uniStatUserSessionLogs, {
|
||
|
match: whereJson,
|
||
|
group: {
|
||
|
_id: {
|
||
|
appid: '$appid',
|
||
|
version: '$version',
|
||
|
platform: '$platform',
|
||
|
channel: '$channel',
|
||
|
},
|
||
|
// 用户数(去重复)
|
||
|
user_count: {
|
||
|
$addToSet: '$uid'
|
||
|
},
|
||
|
|
||
|
create_time: {
|
||
|
$min: '$create_time'
|
||
|
}
|
||
|
},
|
||
|
addFields: {
|
||
|
user_count: {
|
||
|
$size: '$user_count'
|
||
|
}
|
||
|
},
|
||
|
// 按创建时间排序
|
||
|
sort: {
|
||
|
create_time: 1
|
||
|
},
|
||
|
getAll: true
|
||
|
});
|
||
|
|
||
|
let list = dbRes.data;
|
||
|
return list;
|
||
|
}
|
||
|
|
||
|
async groupCount(whereJson) {
|
||
|
const dbRes = await this.aggregate(dbName.uniStatUserSessionLogs, {
|
||
|
match: whereJson,
|
||
|
group: {
|
||
|
_id: null,
|
||
|
// 设备数(去重复)
|
||
|
count: {
|
||
|
$addToSet: '$uid'
|
||
|
},
|
||
|
},
|
||
|
addFields: {
|
||
|
count: {
|
||
|
$size: '$count'
|
||
|
}
|
||
|
},
|
||
|
getAll: true
|
||
|
});
|
||
|
try {
|
||
|
return dbRes.data[0].count;
|
||
|
} catch (err) {
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
module.exports = new Dao();
|