咸虾米
咸虾米
  • 发布:2024-06-29 11:44
  • 更新:2024-07-02 11:37
  • 阅读:154

使用unicloud聚合查询的两个match能不能合并,试了一下老是出问题

分类:uniCloud
.match({              
    avatar:$.neq(null)                
})  
.match(dbCmd.expr($.in(['$_id','$$userList'])))

上面是聚合的match两个过滤,我想合并成一个,但是老是错误,希望会的大佬给指导一下,合在一个match和分成两个match查询效率是否有区别?

2024-06-29 11:44 负责人:无 分享
已邀请:
DCloud_uniCloud_CRL

DCloud_uniCloud_CRL

具体什么错误呢?

  • 咸虾米 (作者)

    大佬,这样分开写match过滤,与写在一个match中,查询效率是否一致那?

    2024-07-01 15:26

  • DCloud_uniCloud_CRL

    回复 咸虾米: 这也是要看具体查询情况,如果存在索引,可以合并为一个match查询,可以加快查询速度。如果查询的数据量很大,可以拆成多个match实现,后面的match阶段会处理较少的数据量。你还是要根据实际情况来自行判断是否合并。

    2024-07-01 16:38

  • 咸虾米 (作者)

    回复 DCloud_uniCloud_CRL: 如何合并的话会报错,$add only supports numeric or date types, not bool;

    麻烦给看一下,这个合并查询有问题吗?

    .match(dbCmd.expr(

    $.add([

    $.neq(['$avatar',null]),

    $.in(['$_id','$$userList'])

    ])

    ))

    2024-07-02 09:36

  • DCloud_uniCloud_CRL

    回复 咸虾米: match 里应该用 and吧,不是add

    2024-07-02 11:37

  • 咸虾米 (作者)

    回复 DCloud_uniCloud_CRL: 不好意思,拷贝错了改成and之后,$.neq(['$avatar',null])查询出来的结果是null,想要过滤掉数据表中没有avatar这个字段的数据,这样写neq是否是正确的那?

    2024-07-02 14:04

  • DCloud_uniCloud_CRL

    回复 咸虾米: 看下match 文档https://doc.dcloud.net.cn/uniCloud/cf-database-aggregate.html#aggregate-match

    2024-07-02 16:39

要回复问题请先登录注册