龙啸泽渊
龙啸泽渊
  • 发布:2020-05-06 16:34
  • 更新:2020-05-16 11:17
  • 阅读:2583

想请问几个uniCloud数据库查询问题

分类:uniCloud

1:联表条件查询
存在blog表,userfocus表
有一个user_id 从userfocus查询关注的用户(status=0),然后查询blog表里user_id=关注的用户id

目前是先查询userfocus表,然后查blog表加一个id dbCmd.in(userfocus表的结果循环取id得到的list)

效率很慢

2:联表查询多条件

如 有一个blog表 一个blogvote
查询blog表信息并且联表blogvote查询点赞数量,使用 lookup时候不仅要a的id=b的blog_id 还要b的status等于0,该怎么写?

3 :如何在addFileds里只查询数量,目前是查询所有的,然后通过$.size('$')获取数量,然后还要把这个字段清除掉(因为是所有符合条件的数据) 我觉得这样影响效率

恳请帮助.知识有限,文档的方法不知道该怎样使用

2020-05-06 16:34 负责人:DCloud_uniCloud_WYQ 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

这种频繁统计的数量一般在每次点赞的时候就在文章内插一个,不会每次访问都去计算一遍

  • 龙啸泽渊 (作者)

    总数量没有问题,可以每次+1,但是查询是否有点赞记录,需要关联blogvote(blog_id符合,user_id符合,并且status>0),这3个条件该怎么写?如果先查出来数据,然后循环里await db.collection xxxxx速度会非常非常慢

    2020-05-08 17:49

  • DCloud_uniCloud_WYQ

    回复 龙啸泽渊: 增加一个match阶段

    2020-05-08 17:57

  • 龙啸泽渊 (作者)

    回复 DCloud_uniCloud_WYQ: .lookup({

    from: 'blogvote',

    localField: '_id',

    foreignField: 'blog_id',

    as: 'votes'

    })

    .match({

    votes:

    })

    2020-05-08 18:08

  • 龙啸泽渊 (作者)

    回复 龙啸泽渊: 这样吗?实在不知道怎么下手啊

    2020-05-08 18:12

  • 龙啸泽渊 (作者)

    回复 DCloud_uniCloud_WYQ: 就是说,举个例子,如何实现

    select a.,b. from blog a,blogvote b where a.id=b.blog_id and b.status=0 and b.user_id=xxxxx

    2020-05-08 20:21

  • DCloud_uniCloud_WYQ

    回复 龙啸泽渊: match({

    votes: {

    status: 0,

    user_id: 'xxx'

    }

    })

    2020-05-09 14:44

  • weichenxu

    回复 DCloud_uniCloud_WYQ: 感谢 感谢 正好需要这个联表以后再次筛选的方法, 顺便问一下,我是做安卓原生开发的,现在正在学着用unicloud来做一个仿<奈雪的茶>的小程序项目,关于node.js来操作数据这里,我看文档看不明白,该怎么学,也是蛮苦恼的....

    2020-08-25 21:54

  • weichenxu

    回复 DCloud_uniCloud_WYQ: 希望官方指个学习方向 , 或者推荐一下哪些教程视频 , 谢谢了

    2020-08-25 21:55

龙啸泽渊

龙啸泽渊 (作者)

顶,在线等...

龙啸泽渊

龙啸泽渊 (作者)

顶,...
还有一个问题,如何在聚合阶段加判断,
比如我根据用户id lookup user表,然后用unwind+project来拆开user和剔除字段
但是可能有脏的用户id也就是查不到
这样导致就没有这条数据了
所以我想在unwind+project操作前那个if lookup结果>0的判断这样子

重庆柔然科技

重庆柔然科技 - 短头发

可以把点赞用户写入到当前记录的一个数组字段里面

该问题目前已经被锁定, 无法添加新回复