【问题标题】:New "millenium bug" with Mongo aggregate query带有 Mongo 聚合查询的新“千年虫”
【发布时间】:2020-01-10 00:03:58
【问题描述】:

我已经使用这个聚合管道大约六个月了:

[
  {
    $group: {
      _id: { $isoWeek: "$createdAt" },
      count: { $sum: 1 },
      fonte: { $push: "$source" },
      appointments: { $push: "$appointment" }
    }
  },
  {
    $addFields: { week: "$_id" }
  },
  {
    $project: { _id: 0 }
  },
  {
    $limit: 2
  }
]

现在它正在检索两年后的随机周。

解决方案似乎很简单,但我无法解决这个问题,我已经浪费了太多时间了。

我尝试了多个分组,匹配无济于事。

预期结果是获得最后两周的数据(生产统计数据),然后使用普通 js 进一步处理并显示在 CRM 中。

编辑

目前结果:

[
  {
    count: 13,
    fonte: [
      'casalugano.ch', 'homegate.ch',
      'casalugano.ch', 'homegate.ch',
      'tutti.ch',      'homegate.ch',
      'homegate.ch',   'casalugano.ch',
      'tutti.ch',      'homegate.ch',
      'homegate.ch',   'homegate.ch',
      'homegate.ch'
    ],
    appointments: [],
    week: 1
  },
  {
    count: 5,
    fonte: [
      'casalugano.ch',
      'homegate.ch',
      'tutti.ch',
      'homegate.ch',
      'homegate.ch'
    ],
    appointments: [],
    week: 52
  }
]

预期结果是获得当前周和最后周的数据价值(第 2 周和第 1 周)。

【问题讨论】:

  • 如果可以分享json格式的示例文档就好了。
  • 你的意思是我现在得到的结果吗?
  • 样本输入文档、您当前的结果和预期的结果将是最好的。此外,如果您使用猫鼬,架构代码会很好。
  • 在一个问题中发布的数据太多了,架构本身是巨大的..我会添加一些东西..
  • 即使第 1 周完全关闭,mongo 中一定有一个奇怪的系统来检测新年,也许下周它会正常化,因为这周 (2) 被正确计算。

标签: mongodb mongoose mongodb-query aggregation-framework


【解决方案1】:

我是这样处理的:

{
                $group: {
                    _id: { $isoWeek: '$createdAt' },
                    count: { $sum: 1 },
                    fonte: { $push: '$fonte' },
                    appointments: { $push: '$appointment' }
                }
            },
            {
                $addFields: { week: '$_id' }
            },
            {
                $project: { _id: 0 }
            },
            /*{
                $limit: 2
            }*/
            {
                $match: { week: { $gte: getWeekNumber(new Date()) - 1, $lte: getWeekNumber(new Date()) } }
            }

getWeekNumber 只是一个辅助函数,它返回 ISO 周,然后我手动反转数组。

如果有人有更清晰的答案,欢迎!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多