收藏
回答

数据库.all操作符和描述不相符

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 微信安卓客户端 wx3d4018496dbb74f8 startup-3geim7nw7dca24b5 3.8.7
const match7 = await db.collection('user')
    .where({
      tag_fields: _.elemMatch({
        tag_id: "486be3ad6854122903442f646fcc1e4e",
        config_id: "dd1eb2b4685418df034c3b4e0f05e728",
        value: _.in(['女']),
      })
    }).limit(10)
    .get();


    console.log(`match7: ${JSON.stringify(match7.data.length)}`)
    


    const match8 = await db.collection('user')
    .where({
      tag_fields: _.all([_.elemMatch({
        tag_id: "486be3ad6854122903442f646fcc1e4e",
        config_id: "dd1eb2b4685418df034c3b4e0f05e728",
        value: _.in(['女']),
      })])
    }).limit(10)
    .get();


    console.log(`match8: ${JSON.stringify(match8.data.length)}`)


match7是能够正确筛选出结果的。但是match8不能。

按照https://developers.weixin.qq.com/miniprogram/dev/wxcloudservice/wxcloud/reference-sdk-api/database/command/Command.all.html的描述,在只有一个_.eleMatch子元素的时候,有_.all和没有_.all应该是等价的吧?为什么会出现不一致?而且这两段代码在云开发IDE数据库的查询里面其实是没有区别的。看起来代码环境和云开发IDE中的数据库查询也不一致?


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

2 个回答

  • 云开发小助手CloudBase
    云开发小助手CloudBase
    2025-08-04

    请前往链接查看问题回复https://cnb.cool/tencent/cloud/cloudbase/community/-/issues/86

    2025-08-04
    有用
    回复
  • 跨商通
    跨商通
    2025-08-04

    代码环境和云开发IDE中的权限不同,会有区别。

    2025-08-04
    有用
    回复 3
    • 言者歌途
      言者歌途
      2025-08-04
      代码环境下云函数的权限应该更高吧。但是IDE里面_.all能查询出来。代码环境却查询不出来。而且代码环境下有没有_.all的结果也不一致。
      2025-08-04
      回复
    • 跨商通
      跨商通
      2025-08-04回复言者歌途
      IDE里的权限最高,是管理员权限。
      2025-08-04
      回复
    • 言者歌途
      言者歌途
      2025-08-04回复跨商通
      云函数也是管理员权限吧。不过这个跟权限关系不大。
      这里的问题是加了_.all就查询不出来了。不加是可以的。
      而在IDE里,加和不加都是可以查询出来的。
      2025-08-04
      回复
登录 后发表内容