收藏
回答

云开发 聚合阶段 match无法根据时间查询

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 工具 wx602a983d938d750b 2.9.1

如图,同样根据时间查询,where里面可以执行,match内执行报错;仅服务端,客户端无此BUG,SDK版本如下。

另外,请提供事务能力,否则有很多业务场景操作没法回滚




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

1 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2019-11-05

    字段为数据库的date类型的话,貌似不能直接和new Date对象比较

    比较Date用  使用$.dateFromString转一下

    查询字段 time <= 2019-10-01的记录,time必须是数据库Date类型

    const $ = db.command.aggregate

    var d = new Date('2019-10-01'),

    a = $.dateFromString({

        dateString: d.toJSON()

    })

    db.collection('xxx').aggregate()

    .addFields({

        matched: $.lte(['$time', a]),

    })

    .match({

        matched:!0

    })

    .end()


    2019-11-05
    有用 5
    回复 27
    • 呆呆地望天空
      呆呆地望天空
      2019-11-05
      同样的语句 放在客户端是可以执行的
      2019-11-05
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2019-11-05回复呆呆地望天空
      可以执行,但应该不是date字段条件的预期结果吧
      2019-11-05
      回复
    • 呆呆地望天空
      呆呆地望天空
      2019-11-05
      按理说,where 和 match 应该具有相同的能力,文档上也是说在match里面可以使用查询操作符。但这个表现貌似确实可以判定为一个BUG
      2019-11-05
      2
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2019-11-05回复呆呆地望天空
      能力差不多
      2019-11-05
      回复
    • 呆呆地望天空
      呆呆地望天空
      2019-11-05
      我刚刚试了一下大神你的方法,表现和客户端一致,条件并没有生效,查出来的结果是数据库里面所有的数据
      2019-11-05
      回复
    查看更多(22)
登录 后发表内容
问题标签