多对多字段本身不能作为条件筛选,但是支持选择多对多关联表内的字段作为筛选条件。
注意:
仅 MySQL 数据库支持多对多关联关系,如您的底层不是 MySQL 数据库,则无法创建。
您可以在对应模型的基础信息中查看数据库类型。


数据模型
学生表和课程表之间存在多对多关联关系,学生表中关联字段为学生选课(xsxk)。
学生表:


关联关系配置:


课程表:


关联关系配置:


查询条件
下面以 APIs 自定义方法为例,介绍如何配置查询条件,该查询以学生表为主表,课程表为关联表。
查询选课中包含语文课的学生名单
查询条件:
module.exports = async function (params, context) {const result = await context.callModel({name: 'xsb_rx0zqhc', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看methodName: 'wedaGetRecordsV2', // 数据模型方法标识params: {filter: {where: {},relateWhere:{ // 关联表查询xsxk:{ // 学生表中的关联字段where:{kcmc:{ // 课程表中需要查询的字段名称$in: ["语文"]}}}}},// 排序orderBy: [{createdAt: "desc", // 创建时间,倒序},],// 返回字段选择select: {$master: true, // 返回主表中的字段xsxk: true // 返回关联字段内容},// 返回total字段getCount: true,// 页面大小pageSize: 10,// 当前页面pageNumber: 1,},});// 在这里返回这个方法的结果,需要与出参定义的结构映射return result;};
查询结果:
{"total": 2,"records": [{"owner": "1534736158943625218","createdAt": 1694070086572,"createBy": "1534736158943625218","updateBy": "1534736158943625218","xsxk": [{"owner": "1534736158943625218","createdAt": 1693972871239,"createBy": "1534736158943625218","updateBy": "1534736158943625218","_id": "7UF1G8XKK6","kcmc": "语文","updatedAt": 1693972871239}],"xsxm": "张三","_id": "7UNM87D3FW","updatedAt": 1694070086572},{"owner": "1534736158943625218","createdAt": 1693972984077,"createBy": "1534736158943625218","updateBy": "1534736158943625218","xsxk": [{"owner": "1534736158943625218","createdAt": 1693972871239,"createBy": "1534736158943625218","updateBy": "1534736158943625218","_id": "7UF1G8XKK6","kcmc": "语文","updatedAt": 1693972871239}],"xsxm": "李四","_id": "7UF1SESBCC","updatedAt": 1693972984077}]}
查询张三英语课的选课记录
查询条件:
module.exports = async function (params, context) {const result = await context.callModel({name: 'xsb_rx0zqhc', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看methodName: 'wedaGetRecordsV2', // 数据模型方法标识params: {filter: {where: { // 主表查询$and: [{xsxm: { // 学生表中需要查询的字段名称$eq: "张三"}}]},relateWhere:{ // 关联表查询xsxk:{ // 学生表中的关联字段where:{kcmc:{ // 课程表中需要查询的字段名称$in: ["英文"]}}}}},// 排序orderBy: [{createdAt: "desc", // 创建时间,倒序},],// 返回字段选择select: {$master: true, // 返回主表中的字段xsxk: true // 返回关联字段内容},// 返回total字段getCount: true,// 页面大小pageSize: 10,// 当前页面pageNumber: 1,},});// 在这里返回这个方法的结果,需要与出参定义的结构映射return result;};
查询结果:
{"total": 1,"records": [{"owner": "1534736158943625218","createdAt": 1694072317951,"createBy": "1534736158943625218","updateBy": "1534736158943625218","xsxk": [{"owner": "1534736158943625218","createdAt": 1693972887373,"createBy": "1534736158943625218","updateBy": "1534736158943625218","_id": "7UF1HQD1QL","kcmc": "英文","updatedAt": 1693972887373}],"xsxm": "张三","_id": "7UNT5CS91A","updatedAt": 1694072317951}]}