查询选项

select

选择要返回的字段,可加速搜索。每个字段用,号隔开,可以空一格加自定义别名。
{ select: "phone, 姓名, wx.nickname 昵称, avg(年龄) 平均年龄" } 只返回三个字段,key分别是phone, 姓名, 昵称, 平均年龄

distinct

去除查询结果的重复行,返回唯一不重复的值。
{ distinct: true, select: "产品类别" }:不重复的产品类别
{ distinct: true, select: "省份, 城市" }:不重复的城市和省份组合

limit

一次查询最多返回的数据条数。前端最多1000条,后端最多5000条。
limit等于1时返回的是符合条件的第一条数据本身(或404)。
limit大于1并且没填skip或等于0时返回的是{ arr: 数据数组, count: 数据总数 }
其它情况返回的是数组。

skip

跳过前n条记录,常和limit一起使用进行分页。

sort

排序,每个字段用,隔开,-表示倒序。如不需分页显示,推荐改在前端排序以提高服务器性能
{ "sort": "年级, -成绩" } 先按年级升序再按成绩降序

nulls

空值(null)被视为比其他值都大,因此升序时空值会默认排在最后面,而降序在最前面。
可以用{ nulls: "first" }{ nulls: "last" }显式指定排序规则

group

分组统计,常与聚合函数一起使用。
{ group: "班级, 科目", select: "班级, 科目, avg(成绩)" }:统计每个班级每门科目的平均分
{ group: "rollup(班级, 科目)", select: "班级, 科目, avg(成绩)" }:生成班级小计和总计

having

分组后筛选,对分组结果进行过滤。
{ group: "班级, 科目", select: "班级, 科目, avg(成绩)", having: { "avg(成绩)": { $gt: 80 } } }:平均分超过80分的班级科目

join

多表连接。连接类型type是inner/left/right/full/cross之一,默认是内连接;table是业务表中的一个,通常会使用别名;连接条件通过on指定。
$product.find({ type: "员工" }, { select: "姓名, 部门.x.部门名称" join: [{ type: "left", table: "product 部门", on: {"部门id": "部门.id"} }], sort: "部门.x.部门名称" }):根据部门id查找部门名称

array

把数组展开为多行。

财务系统中一个凭证有多行分录,通过array把分录数组展开成多条数据后进行查询统计
{ array: "分录", group: "分录.科目", select: "分录.科目, sum(分录.借), sum(分录.贷)", type: { float: ["借", "贷"] } }):统计凭证分录各科目的借贷总额

type

类型转换,把查询结果中的字符串类型的字段转换成数值(int或float)。
聚合函数的返回结果是字符串,因为它们的数值有可能太大从而超过可以安全表示的最大整数(9007199254740991),从而引起计算精度问题。如果前端需要用到数值并确信不超过最大整数就可以用它转换。

{ type: { int: ["商品总数"], float: ["成本总额", "销售总额"] } }

由众触低代码平台生成和驱动