【问题标题】:How to add query 'greater than' date in match aggregation query in mongoose如何在猫鼬的匹配聚合查询中添加查询“大于”日期
【发布时间】:2020-12-08 01:06:25
【问题描述】:

我需要添加日期以从 mongo 匹配中获得响应。

我在数据库中的架构:

schedule: {
  creationDate: "2020-12-06T00:48:38.000Z",
  creationUser: "5fcc23936ce8678e43d35b06",
  end: "2020-12-06T00:00:00.000Z",
  operationType: "C",
  start: "2020-12-05T20:00:00.000Z",
  _id: "5fcc2a664d18280025ac0acb"
}

我的查询:

Object.keys(params.filter).map((key) => {
  if(key === 'start') {
    match[key] = {
      $gte: new Date(params.filter[key])
    }
  }
})

我的结果:

[]

【问题讨论】:

  • 欢迎来到 StackOverflow。为了提供帮助,您需要分享更多详细信息:这个params 对象是什么以及您在哪里(在哪个组件内)进行转换,在密钥迭代之前它的状态是什么?它来自哪里?帮助我们进行一些调试工作。
  • @KiaKaha 谢谢,下面,我应用了 mongo atlas 中的解决方案。

标签: mongodb date match


【解决方案1】:

我解决了这个问题。我需要做的是在 mongodb 中为匹配创建一个聚合,它可以使日期大于用户输入的日期。只有 CLI 示例出现在 mongo 文档中。所以我来这里寻求帮助。但我通过在 mongo atlas 提供的构造函数中创建查询找到了答案。这里我分享一下。我非常爱你。

"creationDate": {
    "$gte": {
      "$date": "2020-12-01T03:00:00Z"
    },
    "$lte": {
      "$date": "2020-12-31T03:00:00Z"
    }
  }

具体翻译成我的代码,解决方法是这样的:

Object.keys(params.filter).map((key) => {
  if(key === 'employee') {
    match[key] = {
      $oid: params.filter[key]
    }
  }
  if(key === 'start') {
    match[key] = {
      $gte: {
        $date: params.filter[key]
      }
    }
  }
})

【讨论】:

    猜你喜欢
    • 2022-12-05
    • 2017-03-12
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    相关资源
    最近更新 更多