logologo
开始
手册
开发
插件
API
English
简体中文
开始
手册
开发
插件
API
English
简体中文
logologo
API Overview

@nocobase/auth

AuthManager
Auth
BaseAuth

@nocobase/cache

CacheManager
Cache

@nocobase/cli

NocoBase CLI
全局环境变量

@nocobase/client

Application
Plugin

@nocobase/database

Collection
Field

interfaces

BaseInterface
Filter Operators

RelationRepository

BelongsToManyRepository
belongs-to-repository
HasManyRepository
HasOneRepository
Repository

shared

create-options
destroy-options
find-one
find-options
transaction
update-options

@nocobase/data-source-manager

DataSourceManager
DataSource (abstract)
ICollectionManager
ICollection
IField
IModel
IRepository

@nocobase/flow-engine

DataSourceManager
FlowContext
FlowEngine
FlowModel
FlowResource

@nocobase/logger

Logger

@nocobase/server

AppCommand
Application
AuditManager
Context
Migration
Plugin

@nocobase/sdk

Auth
Storage
Previous PageBaseInterface
Next PageRelationRepository

#Filter Operators

用于 Repository 的 find、findOne、findAndCount、count 等 API 的 filter 参数中:

const repository = db.getRepository('books');

repository.find({
  filter: {
    title: {
      $eq: '春秋',
    },
  },
});

为了支持 JSON 化,NocoBase 中将查询运算符以 $ 为前缀的字符串标识。

另外,NocoBase 也提供了扩展运算符的 API,详见 db.registerOperators()。

#通用运算符

#$eq

判断字段值是否相等于指定值。相当于 SQL 的 =。

示例

repository.find({
  filter: {
    title: {
      $eq: '春秋',
    },
  },
});

等同于 title: '春秋'。

#$ne

判断字段值是否不等于指定值。相当于 SQL 的 !=。

示例

repository.find({
  filter: {
    title: {
      $ne: '春秋',
    },
  },
});

#$is

判断字段值是否为指定值。相当于 SQL 的 IS。

示例

repository.find({
  filter: {
    title: {
      $is: null,
    },
  },
});

#$not

判断字段值是否不为指定值。相当于 SQL 的 IS NOT。

示例

repository.find({
  filter: {
    title: {
      $not: null,
    },
  },
});

#$col

判断字段值是否等于另一个字段的值。相当于 SQL 的 =。

示例

repository.find({
  filter: {
    title: {
      $col: 'name',
    },
  },
});

#$in

判断字段值是否在指定数组中。相当于 SQL 的 IN。

示例

repository.find({
  filter: {
    title: {
      $in: ['春秋', '战国'],
    },
  },
});

#$notIn

判断字段值是否不在指定数组中。相当于 SQL 的 NOT IN。

示例

repository.find({
  filter: {
    title: {
      $notIn: ['春秋', '战国'],
    },
  },
});

#$empty

判断一般字段是否为空,如果是字符串字段,判断是否为空串,如果是数组字段,判断是否为空数组。

示例

repository.find({
  filter: {
    title: {
      $empty: true,
    },
  },
});

#$notEmpty

判断一般字段是否不为空,如果是字符串字段,判断是否不为空串,如果是数组字段,判断是否不为空数组。

示例

repository.find({
  filter: {
    title: {
      $notEmpty: true,
    },
  },
});

#逻辑运算符

#$and

逻辑 AND。相当于 SQL 的 AND。

示例

repository.find({
  filter: {
    $and: [{ title: '诗经' }, { isbn: '1234567890' }],
  },
});

#$or

逻辑 OR。相当于 SQL 的 OR。

示例

repository.find({
  filter: {
    $or: [{ title: '诗经' }, { publishedAt: { $lt: '0000-00-00T00:00:00Z' } }],
  },
});

#布尔类型字段运算符

用于布尔类型字段 type: 'boolean'

#$isFalsy

判断布尔类型字段值是否为假。布尔字段值为 false、0 和 NULL 的情况都会被判断为 $isFalsy: true。

示例

repository.find({
  filter: {
    isPublished: {
      $isFalsy: true,
    },
  },
});

#$isTruly

判断布尔类型字段值是否为真。布尔字段值为 true 和 1 的情况都会被判断为 $isTruly: true。

示例

repository.find({
  filter: {
    isPublished: {
      $isTruly: true,
    },
  },
});

#数字类型字段运算符

用于数字类型字段,包括:

  • type: 'integer'
  • type: 'float'
  • type: 'double'
  • type: 'real'
  • type: 'decimal'

#$gt

判断字段值是否大于指定值。相当于 SQL 的 >。

示例

repository.find({
  filter: {
    price: {
      $gt: 100,
    },
  },
});

#$gte

判断字段值是否大于等于指定值。相当于 SQL 的 >=。

示例

repository.find({
  filter: {
    price: {
      $gte: 100,
    },
  },
});

#$lt

判断字段值是否小于指定值。相当于 SQL 的 <。

示例

repository.find({
  filter: {
    price: {
      $lt: 100,
    },
  },
});

#$lte

判断字段值是否小于等于指定值。相当于 SQL 的 <=。

示例

repository.find({
  filter: {
    price: {
      $lte: 100,
    },
  },
});

#$between

判断字段值是否在指定的两个值之间。相当于 SQL 的 BETWEEN。

示例

repository.find({
  filter: {
    price: {
      $between: [100, 200],
    },
  },
});

#$notBetween

判断字段值是否不在指定的两个值之间。相当于 SQL 的 NOT BETWEEN。

示例

repository.find({
  filter: {
    price: {
      $notBetween: [100, 200],
    },
  },
});

#字符串类型字段运算符

用于字符串类型字段,包括 string

#$includes

判断字符串字段是否包含指定子串。

示例

repository.find({
  filter: {
    title: {
      $includes: '三字经',
    },
  },
});

#$notIncludes

判断字符串字段是否不包含指定子串。

示例

repository.find({
  filter: {
    title: {
      $notIncludes: '三字经',
    },
  },
});

#$startsWith

判断字符串字段是否以指定子串开头。

示例

repository.find({
  filter: {
    title: {
      $startsWith: '三字经',
    },
  },
});

#$notStatsWith

判断字符串字段是否不以指定子串开头。

示例

repository.find({
  filter: {
    title: {
      $notStatsWith: '三字经',
    },
  },
});

#$endsWith

判断字符串字段是否以指定子串结尾。

示例

repository.find({
  filter: {
    title: {
      $endsWith: '三字经',
    },
  },
});

#$notEndsWith

判断字符串字段是否不以指定子串结尾。

示例

repository.find({
  filter: {
    title: {
      $notEndsWith: '三字经',
    },
  },
});

#$like

判断字段值是否包含指定的字符串。相当于 SQL 的 LIKE。

示例

repository.find({
  filter: {
    title: {
      $like: '计算机',
    },
  },
});

#$notLike

判断字段值是否不包含指定的字符串。相当于 SQL 的 NOT LIKE。

示例

repository.find({
  filter: {
    title: {
      $notLike: '计算机',
    },
  },
});

#$iLike

判断字段值是否包含指定的字符串,忽略大小写。相当于 SQL 的 ILIKE(仅 PG 适用)。

示例

repository.find({
  filter: {
    title: {
      $iLike: 'Computer',
    },
  },
});

#$notILike

判断字段值是否不包含指定的字符串,忽略大小写。相当于 SQL 的 NOT ILIKE(仅 PG 适用)。

示例

repository.find({
  filter: {
    title: {
      $notILike: 'Computer',
    },
  },
});

#$regexp

判断字段值是否匹配指定的正则表达式。相当于 SQL 的 REGEXP(仅 PG 适用)。

示例

repository.find({
  filter: {
    title: {
      $regexp: '^计算机',
    },
  },
});

#$notRegexp

判断字段值是否不匹配指定的正则表达式。相当于 SQL 的 NOT REGEXP(仅 PG 适用)。

示例

repository.find({
  filter: {
    title: {
      $notRegexp: '^计算机',
    },
  },
});

#$iRegexp

判断字段值是否匹配指定的正则表达式,忽略大小写。相当于 SQL 的 ~*(仅 PG 适用)。

示例

repository.find({
  filter: {
    title: {
      $iRegexp: '^COMPUTER',
    },
  },
});

#$notIRegexp

判断字段值是否不匹配指定的正则表达式,忽略大小写。相当于 SQL 的 !~*(仅 PG 适用)。

示例

repository.find({
  filter: {
    title: {
      $notIRegexp: '^COMPUTER',
    },
  },
});

#日期类型字段运算符

用于日期类型字段 type: 'date'

#$dateOn

判断日期字段是否在某天内。

示例

repository.find({
  filter: {
    createdAt: {
      $dateOn: '2021-01-01',
    },
  },
});

#$dateNotOn

判断日期字段是否不在某天内。

示例

repository.find({
  filter: {
    createdAt: {
      $dateNotOn: '2021-01-01',
    },
  },
});

#$dateBefore

判断日期字段是否在某个值之前。相当于小于传入的日期值。

示例

repository.find({
  filter: {
    createdAt: {
      $dateBefore: '2021-01-01T00:00:00.000Z',
    },
  },
});

#$dateNotBefore

判断日期字段是否不在某个值之前。相当于大于等于传入的日期值。

示例

repository.find({
  filter: {
    createdAt: {
      $dateNotBefore: '2021-01-01T00:00:00.000Z',
    },
  },
});

#$dateAfter

判断日期字段是否在某个值之后。相当于大于传入的日期值。

示例

repository.find({
  filter: {
    createdAt: {
      $dateAfter: '2021-01-01T00:00:00.000Z',
    },
  },
});

#$dateNotAfter

判断日期字段是否不在某个值之后。相当于小于等于传入的日期值。

示例

repository.find({
  filter: {
    createdAt: {
      $dateNotAfter: '2021-01-01T00:00:00.000Z',
    },
  },
});

#数组类型字段运算符

用于数组类型字段 type: 'array'

#$match

判断数组字段的值是否匹配指定数组中的值。

示例

repository.find({
  filter: {
    tags: {
      $match: ['文学', '历史'],
    },
  },
});

#$notMatch

判断数组字段的值是否不匹配指定数组中的值。

示例

repository.find({
  filter: {
    tags: {
      $notMatch: ['文学', '历史'],
    },
  },
});

#$anyOf

判断数组字段的值是否包含指定数组中的任意值。

示例

repository.find({
  filter: {
    tags: {
      $anyOf: ['文学', '历史'],
    },
  },
});

#$noneOf

判断数组字段的值是否不包含指定数组中的任意值。

示例

repository.find({
  filter: {
    tags: {
      $noneOf: ['文学', '历史'],
    },
  },
});

#$arrayEmpty

判断数组字段是否为空。

示例

repository.find({
  filter: {
    tags: {
      $arrayEmpty: true,
    },
  },
});

#$arrayNotEmpty

判断数组字段是否不为空。

示例

repository.find({
  filter: {
    tags: {
      $arrayNotEmpty: true,
    },
  },
});

#关系字段类型运算符

用于判断关系是否存在,字段类型包括:

  • type: 'hasOne'
  • type: 'hasMany'
  • type: 'belongsTo'
  • type: 'belongsToMany'

#$exists

有关系数据

示例

repository.find({
  filter: {
    author: {
      $exists: true,
    },
  },
});

#$notExists

无关系数据

示例

repository.find({
  filter: {
    author: {
      $notExists: true,
    },
  },
});