收藏
回答

云开发,如何获取数据库中的某个数组字段包含某个值的数据总条数呢?

假如数据库某集合中有以下三条数据:

    {

    {id:1,tags:['小明','小红','小芳'},

    {id:2,tags:['小明','小菲','小李'},

    {id:3,tags:['小明','小紫','小芳'},

    }    

我该如何获取,集合中含有'小芳'的tags数据的总条数?

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

3 个回答

  • 老张
    老张
    11-08

    除了聚合,下面可能也是可以的:试试。

    db.collection().where({tags:'小芳'}).count()

    11-08
    赞同 2
    回复 3
    • 对方正在输入
      对方正在输入
      11-08
      哇哦,居然还可以这样,亲测可用,赞一个
      11-08
      回复
    • 老张
      老张
      11-08回复对方正在输入
      那也不见你点个赞?这能给我加分的。
      11-08
      2
      回复
    • 对方正在输入
      对方正在输入
      11-08
      哈哈
      11-08
      回复
  • Coande
    Coande
    11-08
    db.collection('products')
      .aggregate()
      .unwind('$tags')
      .match({
        tags: '小芳'
      })
      .count()
      .end()
      .then(console.log)


    聚合应该可以做到,以上未测试。参考:

    https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/aggregation/aggregation.html

    11-08
    赞同 1
    回复 3
    • 对方正在输入
      对方正在输入
      11-08
      十分感谢,可以啦
      11-08
      回复
    • 对方正在输入
      对方正在输入
      11-08回复对方正在输入
      上面的代码运行会报错,原因是count()需要传参。
      count()
      是输出记录数的字段的名字,不能是空字符串,不能以 $ 开头,不能包含 . 字符。
      11-08
      回复
    • Coande
      Coande
      11-08回复对方正在输入
      不过以上是计算 tag 数,tags 中有重复就不准确了,纠正一下,计算数据条数:
      11-08
      1
      回复
  • Yorkshire
    Yorkshire
    11-08

    可以使用db.command.elemMatch接口,详情请查看文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-client-api/database/command.elemMatch.html

    11-08
    赞同 1
    回复 1
    • 对方正在输入
      对方正在输入
      11-08
      谢谢你的回答,我用楼上的方法可以了
      11-08
      回复
问题标签