uniStatSessionLogs.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. async group(data) {
  12. let {
  13. whereJson,
  14. } = data;
  15. const dbRes = await this.aggregate(dbName.uniStatSessionLogs, {
  16. match: whereJson,
  17. group: {
  18. _id: {
  19. appid: '$appid',
  20. version: '$version',
  21. platform: '$platform',
  22. channel: '$channel',
  23. },
  24. // 设备数(去重复)
  25. device_count: {
  26. $addToSet: '$device_id'
  27. },
  28. create_time: {
  29. $min: '$create_time'
  30. }
  31. },
  32. addFields: {
  33. device_count: {
  34. $size: '$device_count'
  35. }
  36. },
  37. // 按创建时间排序
  38. sort: {
  39. create_time: 1
  40. },
  41. getAll: true
  42. });
  43. return dbRes.data;
  44. }
  45. async groupCount(whereJson) {
  46. const dbRes = await this.aggregate(dbName.uniStatSessionLogs, {
  47. match: whereJson,
  48. group: {
  49. _id: null,
  50. // 设备数(去重复)
  51. count: {
  52. $addToSet: '$device_id'
  53. },
  54. },
  55. addFields: {
  56. count: {
  57. $size: '$count'
  58. }
  59. },
  60. getAll: true
  61. });
  62. try {
  63. return dbRes.data[0].count;
  64. } catch (err) {
  65. return 0;
  66. }
  67. }
  68. }
  69. module.exports = new Dao();