收藏
回答

云开发聚合查询Aggregate时match中无法比较Date?

已经试过传入new Date()或者db.serverDate(),均不行。

看文档里聚合操作match的时候不支持聚合操作符,我也把$改为_试过,直接报错

最后是下面的代码,可以看后面的查询结果,我特地和collection().get()进行了比较,后者是能正常返回数据的,而前者返回空集,请问大家一般这样是怎么处理的

return {
  code200,
  list: await db.collection('task').aggregate().match({
    available: true,
    begin_time:$.lte(db.serverDate())
  }).end(),
  list1:await db.collection('task').where({
    available: true,
    begin_time:_.lte(db.serverDate())
  }).get()
}

回答关注问题邀请回答
收藏

3 个回答

  • DC
    DC
    2021-05-13
    老铁,解决了没有?我也遇到相同问题,貌似聚合操作里面不能使用db.serverDate()  =_=!
    
    2021-05-13
    有用
    回复
  • 2020-04-18

    按照楼上大佬的结果,发现lte比较的时候的返回值与实际相反,也试过传入serverDate

    2020-04-18
    有用
    回复 11
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2020-04-18
      你这样不对,先addFields然后在macth
      比如addFields({
         a:xxx
      })
      后面就match({
        a: true
      })
      2020-04-18
      回复
    • 2020-04-18回复o0o有脾气的酸奶
      pipline的话没事的,前面match其他选项,后面addfields,再后面match都可以,我也试过删掉match,直接看返回结果,也不行。流水线就是前面给出结果集,后面再操作
      2020-04-18
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2020-04-18回复
      你是不是不理解我说的?
      2020-04-18
      回复
    • 2020-04-18回复o0o有脾气的酸奶
      我理解,但不是这个问题,你这个写法我也试过,也不行,后来发现疑似是在调用的时候会把date类型转换为string,然后导致返回值错误,现在我干脆存了时间戳。而且流水线的话,连续match都没事的
      2020-04-18
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2020-04-18回复
      恩恩~但是你上面的图片里,只是match了available,相当只是where了available,日期类型可以用dateFromString结合lte和gte比较
      https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/command/aggregate/AggregateCommand.dateFromString.html
      2020-04-18
      回复
    查看更多(6)
  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2020-04-18
    db.collection('task').aggregate()
    .addFields({
      lte_begin_time:$.lte(['$begin_time', db.serverDate])
    }).match({
      available:true,
      lte_begin_time:true
    }).end()
    

    若认为该回答有用,给回答者一个[ 有用 ]吧!

    2020-04-18
    有用
    回复 2
    • 2020-04-18
      有点郁闷,后续是lte返回的结果与应该返回的相反
      2020-04-18
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2020-04-18回复
      有返回吗,我没试过,好像我忘记括号了 db.serverDate()
      2020-04-18
      回复
登录 后发表内容
问题标签