【问题标题】:Metabase date calculation元数据库日期计算
【发布时间】:2019-04-05 09:28:58
【问题描述】:

我希望 Metabase 使用“大于当前日期减去 30 天”,但到目前为止,我还没有设法在使用 mongo 的自定义查询中实现这一点。

我怎样才能让它与元数据库一起使用?

{
    "$match": {
      "$or": [
        {
          "transactions.transactionTime": {
            "$gte": ISODate("Current Date - 30 days")
          }
        },
        {
          "transactions": null
        }
      ]
    }
  },

【问题讨论】:

  • 你有没有使用moment库进行这样的操作?
  • 这是通过元数据库查询生成器,不能使用编码。

标签: mongodb metabase


【解决方案1】:

你可以使用subtract来解决这个问题:

{
  "$match": {
    "$expr": {
      "$gte": [
        "$yourDateField",
        { "$subtract": [ISODate(), { "$multiply": [3600000, 24, 30] }] }
      ]
    }
  }
}

我还使用了带有 3 个参数的 $multiply 来展示计算的工作原理:

1) 3600000 millis = 1 hour
2) 24 hours = 1 day
3) 30 days

但是你可以写一个更短的版本:

{
  "$match": {
    "$expr": {
      "$gte": [
        "$yourDateField",
        { "$subtract": [ISODate(), 2592000000] }
      ]
    }
  }
}

【讨论】:

    【解决方案2】:

    您可以将其传递给您的查询。

    const d = new Date();
    const howManyDaysBefore = 30;
    const thirtyDaysAgo = new Date(d.setDate(d.getDate() - howManyDaysBefore)).toISOString();
    
    console.log(thirtyDaysAgo)

    【讨论】:

    • 据我所知,元数据库查询生成器中没有任何变量可以使用。
    猜你喜欢
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    相关资源
    最近更新 更多