收藏
回答

云开发Aggregate.match阶段不支持时间比较?

查不到数据,不想用addFields+match的方式

const start  = new Date('2020-09-01 00:00:00').toJSON()
const end  = new Date('2020-09-30 00:00:00').toJSON()
db.collection('')
  .aggregate()
  .match({
    time: _.gte(
      $.dateFromString({
        dateString: start,
      })
    ).lte(
      $.dateFromString({
        dateString: end,
      })
    )
  })
  .end()
回答关注问题邀请回答
收藏

1 个回答

  • chill 🙀👀😞👾
    chill 🙀👀😞👾
    2021-01-13

    试了很多次,得出

    const start  = new Date('2020-09-01 00:00:00').toJSON()
    const end  = new Date('2020-09-30 00:00:00').toJSON()
    
    db.collection('')
      .aggregate()
      .match(
        _.and([
          /**
           * 精准 or 模糊查询
           */
          {
            name: 'xx',
          },
          {
            phone: /.+/,
          },
          _.expr(
            /**
             * 时间范围查询
             */
            $.and([
              $.gte([
                '$time',
                $.dateFromString({
                  dateString: start,
                }),
              ]),
              $.lte([
                '$time',
                $.dateFromString({
                  dateString: end,
                }),
              ]),
            ])
          )
        ])
      )
      .end()
    
    2021-01-13
    有用 3
    回复
登录 后发表内容
问题标签