用途:在使用 Ecto.Query DSL 查询数据时提供模式参考,涵盖 where 子句、连接、聚合、预加载和查询组合,用于构建灵活、可复用的数据库查询。
主要能力:使用 from/2 宏构建查询(支持关键字语法、schema 模块和无绑定语法);通过 pin 操作符 ^ 插入外部值;条件表达式、多 where 的 AND 组合、or 条件、in 列表、like/ilike 模式匹配;select 指定字段、元组、map 或 struct;count、avg、sum、min、max 聚合;group_by 与 having;order_by(升降序、多字段、nulls 定位);limit 与 offset 分页;inner join、left join 及 assoc/2 助手;preload 预加载(含嵌套和自定义查询)以避免 N+1;子查询、fragment 原始 SQL、查询提示;union/union_all;pessimistic 与 optimistic 锁定;lateral join 相关子查询;命名绑定;用 dynamic/2 构建动态条件。
使用方式:导入 Ecto.Query 后通过 from/2 组合查询,再传给 Repo 的 all/1、one/1 或 preload/2 执行;可将查询逻辑抽取为函数以便组合复用。
适用场景:筛选排序分页、关联数据连接与预加载、聚合分析、按用户输入构建动态查询、子查询与分组分析、并发更新锁定、可复用查询组件和模式匹配搜索。
限制:fragment 会降低可移植性,应谨慎使用;查询提示依赖具体数据库;外部值必须使用 ^ 以防 SQL 注入;分页应配合 order_by。具体安装或配置信息暂未提供。