收藏
回答

使用云开发数据库的聚合,如何写出指定2个日期之间的表达式

问题模块 框架类型 问题类型 终端类型 AppID 基础库版本
云开发 小程序 需求 客户端 wxc066d762e4dd7357 2.7.4

- 需求的场景描述(希望解决的问题)

数据库中有个叫 books 的集合,每条记录有个字段 date,是用 Date 格式记录的,我想查询2个指定日期直接的记录的数量,不知道该怎么写表达式,有没有朋友可以给点思路的,谢谢


刚才看了一下 db.command.aggregate.lt 的实现方法,也是直接将传入的数值相减


    E.lessThan = function(e) {

      return this.comp(e) < 0

    }


    E.lt = E.lessThan


- 希望提供的能力

数据的比较支持 Date 类型

最后一次编辑于  07-15  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

2 个回答

  • HelloDB
    HelloDB
    09-12

    时间日期什么的存成时间戳就很灵活了,比如查今天新增的产品数

     

      


    09-12
    赞同
    回复
  • 魔术猪
    魔术猪
    07-15

    其实lt gt等都是支持Date的

    07-15
    赞同
    回复 8
    • 李畅(๑´•ω•)
      李畅(๑´•ω•)
      07-15
      实测不支持,用的这个 .project({ matched: $.lt(['$date', now]) }) 。报错:Error: errCode: -501007 invalid parameters | errMsg: [InvalidParameter] Check request parameter fail. Please check your request, but if the problem cannot be solved, contact us.
      07-15
      回复
    • 魔术猪
      魔术猪
      07-15回复李畅(๑´•ω•)
      哦哦,我没有说聚合,说的是collection.where
      07-15
      回复
    • 魔术猪
      魔术猪
      07-15回复李畅(๑´•ω•)
      如果可以字符串比较的话,可以用Aggregate.dateToString转成字符串,我没试过
      07-15
      回复
    • 李畅(๑´•ω•)
      李畅(๑´•ω•)
      07-15回复魔术猪

      前面试了一下,这个

      $.lt([ '20190101', '20190201'])

      可以用,我就把日期转乘字符串来比较了,就是表达式写得真长,整个写完有800个字符。。


      谢谢提醒 collection.where 的 lt 方法,但是我用这个来比较日期好像还是没成功,不知道哪的错

      07-15
      回复
    • 李畅(๑´•ω•)
      李畅(๑´•ω•)
      07-15回复魔术猪

      反反复复用这些,烦死了。。


      $.and([ $.lt([$.concat([ $.arrayElemAt([$.split([$.arrayElemAt([$.split([


      07-15
      回复
    查看更多(3)