首先,不知道云开发使用的集合到底是什么数据库,貌似传闻是NOSQL库中的mongodb,查询语法和mongodb也很像,由于关系型数据库用多了,大多数情况下都在用LINQ,SQL使用的都很少了。
简单熟悉了一下云开发中多个集合表的关联方式,下面举个简单多关联的例子,废话少说上代码:
1 const result = await db.collection('Table_A').aggregate() 2 // 单条件关联 3 .lookup({ 4 from: 'Table_C', 5 localField: 'A_CId', 6 foreignField: 'C_Id', 7 as: 'CInfo' 8 }) 9 // 多条件关联 10 .lookup({ 11 from: 'Table_B', // 关联Table_B表 12 let: { 13 A_id: '$A_id' // 关联A表的_id字段 14 A_type: '$A_type' // 关联A表的_type字段 15 }, 16 pipeline: $.pipeline() 17 // 关联条件,第一个为主结果集属性字段,第二个为let的属性字段 18 // 关于条件,有很多,可以参考数据库文档,结尾会附上链接 19 .match(_expr($.and([ 20 $.eq(['$B_id', '$$A_id']) 21 $.eq(['$B_type', '$$A_type'] 22 ]))) 23 // 选择需要查询出关联b表的哪些字段,1查询,0不查,也可以在这里进行一些字段格式化之类的操作 24 .project({ 25 b_name: 1 26 }) 27 .done(), 28 // 输出到主结果集的别名 29 as: 'BInfo', 30 }) 31 .end()