@coyotte508/mongo-query

中文文档
3.5.0发布于 2026/05/01MITTypeScriptESM + CJS零依赖近 30 天下载 2178

用于操纵 MongoDB 查询语言的 Utils

中文使用文档
文档目录4 节
  1. 简化筛选
  2. 倒数
  3. 解析过滤器
  4. 搜索组

蒙哥马利

Typescript 工具来操纵 MongoDB 查询语言 .

拿着 npm add @coyotte508/mongo-query。 。 。 .

简化筛选

function simplifyFilter<T>(filter: Filter<T>): Filter<T>;

结果是: parseFilter 可以是动词,有很多逻辑组合. simplifyFilter 目的是简化滤波器,从而减少动词.

譬如说, simplifyFilter({$and: [{}, {x: 1}, {y: 2}]} 改为:

{x: 1, y: 2}

倒数

function inverseFilter<T>(filter: Filter<T>): Filter<T>;

这倒置了一个过滤器 。 譬如说, inverseFilter({a: {$in: [1, 2]}}) 将变成 {a: {$nin: [1, 2]}}。 。 。 .

它试图保持简单,但并不是每个倒置都被执行. 在这种情况下, $not 已使用.

解析过滤器

/**
 * @param filter Human-readable boolean filter, eg !(A&&(!B)&&(C||D))
 * @param replace A map or replacement function to replace keys by mongodb filters
 * @returns A mongodb filter
 */
function parseFilter(filter: string): SearchGroupJson<string>;
function parseFilter<T>(filter: string, replace: Map<string, Filter<T>> | ((key: string) => Filter<T>)): Filter<T>;

这将一个人可读取的布尔滤波器转换为MongoDB滤波器.

filter 可使用下列运算符: ! (没有), || (或)和 && (AND)和括号.

replace 是用于替换的映射或函数 A, (中文(简体) ), B...用真正的蒙哥布语句.

例如,可以是:

function replace(expr: `${key}:${val}`) {
  const [key, val] = expr.split(":");

  return { key: { $in: val.split(",") } };
}

或:

replace = new Map([
  ["A", {user: 'somebody'}],
  ["B", {createdAt: {$lt: 'somedate'}}],
  ["C", someOtherCondition],
  ...
])

返回值是一个mongodb过滤器,其组合为 $and, (中文(简体) ), $or 财务报告和审定财务报表 $nor。 。 。 .

譬如说, parseFilter("!(A&&(!B)&&(C||D))") 将返回 :

{"$and":[{"$nor":[{"$and":["A",{"$and":[{"$nor":["B"]}]},{"$or":["C","D"]}]}]}]}

输出是动词,所以结合 simplifyFilter。 。 。 .

搜索组

过滤器的布尔组合的内部代表. 它被使用为 parseFilter这只是一个包装器周围 new SearchGroup(string).toJSON()。 。 。 .

与AST类似,它可以被操纵并被转化,或者被分析.

版本与发布记录

@coyotte508/mongo-query 共发布 12 个版本,首次发布于 2022/04/27;过去 12 个月发布了 1 个版本。

版本发布日期距今
3.5.0latest2026/05/016 个月前
3.4.02025/02/191.7 年前
3.3.12024/10/282 年前
3.3.02024/10/282 年前
3.2.02024/10/022 年前
3.1.02024/10/012 年前

关于 @coyotte508/mongo-query 的常见问题

@coyotte508/mongo-query 是什么?

用于操纵 MongoDB 查询语言的 Utils

如何安装 @coyotte508/mongo-query?

在项目目录运行 npm install @coyotte508/mongo-query,或使用 pnpm add / yarn add / bun add。

@coyotte508/mongo-query 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@coyotte508/mongo-query 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@coyotte508/mongo-query 可以商用吗?

@coyotte508/mongo-query 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@coyotte508/mongo-query 的下载量有多少?

根据 npm 官方下载统计,@coyotte508/mongo-query 在 2026/10/11 – 2026/11/09 这 30 天内被下载 2,178 次,日均约 73 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@coyotte508/mongo-query 还在维护吗?

最新版本 3.5.0 发布于 2026/05/01(6 个月前);至今共发布 12 个版本,其中过去 12 个月发布了 1 个;首次发布于 2022/04/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。