收藏
回答

云数据库 字段是数组,数组中是否包含某个值,在where中如何写

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 需求 客户端 wxf236bb2b677a72f3 2.3.0

云数据库 字段是数组,数组中是否包含某个值,在where中如何写

看文档里

const _ = db.command
db.collection('todos').where({  progress: _.in([0, 100])
})
.get({  success: console.log,  fail: console.error
})

它是字段是否在数组中,和我的需求相反

最后一次编辑于  2018-10-10
回答关注问题邀请回答
收藏

2 个回答

  • 邓坤力
    邓坤力
    2018-10-11

    暂不支持,我们后续会提供相应 API,敬请关注

    2018-10-11
    有用
    回复 4
    • opcg
      opcg
      2019-09-10
      怎么删除字段数组中的某一下标值
      2019-09-10
      回复
    • 邓坤力
      邓坤力
      2019-09-16回复opcg
      已支持 https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/query-array-object.html
      2019-09-16
      回复
    • 曹志翔
      曹志翔
      2020-01-06回复邓坤力
      请问“判断数组字段中是否包括某个值”的安全规则如何写?
      例如:
      记录 {
        follows: [
          'oghiH5P429sDBnYBymfFqLcUXXXA',
          'oghiH5P429sDBnYBymfFqLcUXXXB',
        ]
      }
      安全规则 {
        "read": "auth.openid in doc.follows",
        "write": false
      }
      查询
      db.collection('task').where({
          follows: 'oghiH5P429sDBnYBymfFqLcUXXXB'
        })
        .get()
        .then(res => console.log(res.data))
        .catch(error => console.log)
      报权限错误
      Error: errCode: -502003 database permission denied | errMsg: Permission denied
      2020-01-06
      回复
    • 邓坤力
      邓坤力
      2020-01-16回复曹志翔
      安全规则中 doc 是传递的查询语句,因此上面那种查询实际上是有问题的,相当于要 auth.openid  in 一个给定的字符串里,安全规则应该是:
      2020-01-16
      2
      回复
  • 2018-10-26

    字段值是数组的,不仅无法查是否包含某值,其它条件查询也表现得很奇怪。比如某记录有字段,v:["a","b"],当查询条件为{v:"a"},或{v:"b"},或{v:_.eq("a")},或{v:_.eq("b")}都能查到它。注:其中  _ = db.command。甚至查询条件里同时用{v:"a",v:"b"}或同时用{v:_.eq("a"),v:_.eq("b")}也能查到。


    2018-10-26
    有用
    回复
登录 后发表内容