如何在云开发中更好地实现类似关系型数据库in(select)的查询?
发布于 5 年前 作者 xiuying01 5356 次浏览 来自 官方Issues
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()
1 回复

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

回到顶部