uniStatSessionLogs.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /**
  2. * 数据库操作
  3. */
  4. const BaseMod = require('../../base');
  5. const dbName = require("./config");
  6. class Dao extends BaseMod {
  7. constructor() {
  8. super();
  9. this.tablePrefix = false; // 不使用表前缀
  10. }
  11. // 分组查询
  12. async group(data) {
  13. let {
  14. whereJson,
  15. } = data;
  16. const dbRes = await this.aggregate(dbName.uniStatSessionLogs, {
  17. match: whereJson, // 匹配查询条件
  18. group: {
  19. _id: {
  20. appid: '$appid',
  21. version: '$version',
  22. platform: '$platform',
  23. channel: '$channel',
  24. },
  25. // 设备数(去重复)
  26. device_count: {
  27. $addToSet: '$device_id'
  28. },
  29. create_time: {
  30. $min: '$create_time'
  31. }
  32. },
  33. addFields: {
  34. device_count: {
  35. $size: '$device_count'
  36. }
  37. },
  38. // 按创建时间排序
  39. sort: {
  40. create_time: 1
  41. },
  42. getAll: true
  43. });
  44. return dbRes.data;
  45. }
  46. // 分组统计数量
  47. async groupCount(whereJson) {
  48. const dbRes = await this.aggregate(dbName.uniStatSessionLogs, {
  49. match: whereJson, // 匹配查询条件
  50. group: {
  51. _id: null,
  52. // 设备数(去重复)
  53. count: {
  54. $addToSet: '$device_id'
  55. },
  56. },
  57. addFields: {
  58. count: {
  59. $size: '$count'
  60. }
  61. },
  62. getAll: true
  63. });
  64. try {
  65. return dbRes.data[0].count;
  66. } catch (err) {
  67. return 0;
  68. }
  69. }
  70. }
  71. module.exports = new Dao();