aggregateTest.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. # coding=utf-8
  2. from base import init_env
  3. from bson import ObjectId
  4. init_env(False)
  5. from apilib.monetary import RMB
  6. from apps.web.report.models import DealerDailyStat
  7. from apps.web.user.models import ConsumeRecord
  8. from apps.web.dealer.define import DEALER_INCOME_SOURCE
  9. dealerId = ObjectId("5b9ae99ad89a177846459999")
  10. consur = DealerDailyStat.get_collection().aggregate([
  11. # 建立筛选条件
  12. {
  13. "$match": {
  14. "dealerId": dealerId
  15. }
  16. },
  17. # 将日期字符串转换为date类型
  18. {
  19. "$project": {
  20. "date": {"$dateFromString": {"dateString": "$date"}},
  21. "daily": 1
  22. }
  23. },
  24. # 获取年份
  25. {
  26. "$project": {
  27. "month": {"$month": "$date"},
  28. "year": {"$year": "$date"},
  29. "daily": 1
  30. },
  31. },
  32. # 最后一步是分组
  33. # {
  34. # "$group": DealerDailyStat.monthGroup()
  35. # }
  36. ])
  37. # for _ in consur:
  38. # print _
  39. #
  40. # from pprint import pprint
  41. # pprint(DealerDailyStat.monthGroup())
  42. import time
  43. from pprint import pprint
  44. now = time.time()
  45. stats = DealerDailyStat.group_by_month("2020-01", {"dealerId": dealerId}, "consumption")
  46. pprint(stats)