收藏
回答

如何在云开发中更好地实现类似关系型数据库in(select)的查询?

SELECT * FROM tb1 WHERE user_id IN (SELECT follow_id FROM tb2 WHERE user_id='XXX')

以上为关系型数据库下的语句,请问各位大佬如何改为云开发数据库的查询

我目前的做法是用tb1的author_id去tb2中寻找当前用户的与author_id相同的follow_id的记录集,然后根据记录集的长度来判断是否符合要求,大佬们有没有更好的解决办法

db.collection('tb1').aggregate()
  .lookup({
  from: 'tb2',
  let: {
    author_id: '$user_id',
  },
  pipeline: $.pipeline()
    .match(_.expr($.and([
    $.eq(['$follow_id', '$$author_id']),
    $.eq(['$user_id', 'XXX']),
  ])))
  .done(),
  as: 'tm',
  })
  .addFields({
  tcount:$.size('$tm')
  })
  .match({
  tcount:_.gt(0)
  })
  .end()
最后一次编辑于  2020-03-23
回答关注问题邀请回答
收藏

1 个回答

  • 郑旭东
    郑旭东
    2020-03-23

    要么是我不知道,要么它也没别的办法,就这样

    2020-03-23
    有用
    回复
登录 后发表内容
问题标签